sql >> Databasteknik >  >> RDS >> Mysql

Laravel vältalig fråga

Detta är inte det fullständiga svaret men det är nära. Oavsett hur jag bearbetar data kan jag dock inte ta reda på hur du kommer på cash_has . Jag behåller det också rå SQL eftersom jag känner att det skulle vara mer användbart och inte borde vara svårt att konvertera tillbaka till frågebyggaren. Jag vet inte heller de exakta kolumnnamnen så du kanske måste fixa några av dem.

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

Anledningen till att du får ett felmeddelande med din fråga är dock att om du grupperar efter något måste du gruppera efter allt du väljer som inte är aggregerade kolumner (funktioner som summa, max, avg).




  1. GROUP_CONCAT mysql-satsfel

  2. Skapa en MySQL-databas

  3. Hämta kolumnnamn och typer av en lagrad procedur?

  4. subprocess ger ett fel. Systemet kan icke finna den specificerade filen