sql >> Databáze >  >> RDS >> Mysql

Laravel výmluvný dotaz

Toto není úplná odpověď, ale je blízko. Bez ohledu na to, jak s daty pracuji, nemohu přijít na to, jak přicházíte s cash_has . Také to nechávám surové SQL, protože mám pocit, že by to bylo užitečnější a nemělo by být obtížné převést zpět na tvůrce dotazů. Také neznám přesné názvy sloupců, takže možná budete muset některé z nich opravit.

SELECT
    COALESCE(outlets_admin.name, outlets.name) AS outlet, 
    COALESCE(boys_admin.name, boys.name) AS delivery_boy,
    SUM(IF(cm.source_type = 'admin', amount, 0)) AS cash_taken,
    SUM(IF(cm.source_type = 'deliveryBoy', amount, 0)) AS cash_returned,
    SUM(IF(cm.source_type = 'admin', amount, 0)) - SUM(IF(cm.source_type = 'deliveryBoy', amount, 0)) AS cash_has
FROM delivery_cash_manages cm
LEFT JOIN outlets ON outlets.id = cm.destination_id AND cm.source_type = 'deliveryBoy'
LEFT JOIN delivery_boys boys ON boys.id = cm.source_id AND cm.source_type = 'deliveryBoy'
LEFT JOIN outlets outlets_admin ON outlets_admin.id = cm.source_id AND cm.source_type = 'admin'
LEFT JOIN delivery_boys boys_admin ON boys_admin.id = cm.destination_id AND cm.source_type = 'admin'
WHERE COALESCE(outlets.id, outlets_admin.id) = '2'  #  This is where you plug in your $outlet_id
GROUP BY outlet, delivery_boy

Důvod, proč se vám v dotazu zobrazuje chyba, je ten, že pokud seskupujete podle čehokoli, musíte seskupit podle všeho, co vyberete, což nejsou agregované sloupce (funkce jako suma, max, avg).




  1. mysql se duplikuje s LOAD DATA INFILE

  2. Připojení MySQL k Visual Studiu C#

  3. Co je MariaDB Enterprise Cluster?

  4. $wpdb->update nebo $wpdb->insert způsobí přidání lomítek před uvozovky