2016-03-20 10 views
0

Ich arbeite Ob Bericht über Kassierer Ich möchte in diesem Bericht wissen insgesamt Kassierer an bestimmten Tag und ich schrieb SQL-Anweisung, aber diese Anweisung Return Duplicate Row ..it's Wiederholungsaufzeichnungen, wenn ich linken beitreten mit Tabellen. Dies ist meine SQL-Anweisung:MySQL Anweisung Return doppelte Zeilen

select DISTINCT 
tblcashiers.CashierName, 
IFNULL(tblcashieropeningbalance.Mount, 0) as COB, 
IFNULL(tblcashdeposit.Mount, 0) as CD, 
IFNULL(tblbankcashiertransfer.Mount, 0) as BCT, 
IFNULL(tblsupplierrefund.Refund, 0) as SPR , 
IFNULL(tblcustomrefund.Refund , 0) as CUR, 
IFNULL(tblcashpayments.Mount, 0) as CP, 
IFNULL(tblcashiertransfer.Mount, 0) as CT, 
IFNULL(tblcashiertransfer.Mount, 0) as CT2, 
IFNULL(tblcustomerrefund.Refund, 0) as CR, 
IFNULL(tblcashierbanktransfer.Mount, 0)as CBT, 
IFNULL(tblexpenses.Mount, 0)as EX, 
IFNULL(tblcustomespayment.Mount, 0)as CUSP 

from tblcashiers 
LEFT JOIN tblcashdeposit on tblcashiers.CashierID = tblcashdeposit.CashierID 
LEFT JOIN tblbankcashiertransfer on tblcashiers.CashierID = tblbankcashiertransfer.CashierID 
LEFT JOIN tblsupplierrefund on tblcashiers.CashierID = tblsupplierrefund.CashierID 
LEFT JOIN tblcustomrefund on tblcashiers.CashierID = tblcustomrefund.CashierID 
LEFT JOIN tblcashpayments on tblcashiers.CashierID = tblcashpayments.CashierID 
LEFT JOIN tblcustomerrefund on tblcashiers.CashierID = tblcustomerrefund.CashierID ='2' 
LEFT JOIN tblcashierbanktransfer on tblcashiers.CashierID = tblcashierbanktransfer.CashierID 
LEFT JOIN tblcashiertransfer on tblcashiers.CashierID = tblcashiertransfer.FromCashierID 
LEFT JOIN tblcashiertransfer as tblcashiertransfer2 on tblcashiers.CashierID = tblcashiertransfer2.ToCashierID 
-- LEFT JOIN tblcashiers as tblcashiers on tblcashiers.CashierID = tblcashiers.CashierID 
LEFT JOIN tblcashieropeningbalance on tblcashieropeningbalance.CashierID = tblcashiers.CashierID 
LEFT JOIN tblexpenses as tblexpenses on tblcashiers.CashierID = tblexpenses.CashierID 
LEFT JOIN tblcustomespayment as tblcustomespayment on tblcashiers.CashierID = tblcustomespayment.CashierID 
where tblcashiers.CashierID = 2 

and tblcashdeposit .TransDate >= '2016-01-01' 
and tblcashdeposit .TransDate <= '2016-03-01' 

GROUP BY tblcashieropeningbalance.TransDate, 
tblcashdeposit.TransDate, tblbankcashiertransfer.TransDate, 
tblsupplierrefund.RefundDate, tblcashpayments.TransDate, 
tblcustomerrefund.RefundDate, tblcashierbanktransfer.TransDate, 
tblcashiertransfer.TransDate, tblcashiertransfer.TransDate, 
tblexpenses.TransDate,tblcustomespayment.TransDate 

Wie kann ich dieses Problem beheben?

Antwort

-1

Entfernen Sie die GROUP BY aus der Abfrage. GROUP BY wird nur verwendet, wenn Sie normale Spalten mit Aggregatfunktionen in SELECT mischen. Ihre Abfrage enthält keine Aggregatfunktionen (min, max ...), sodass Sie GROUP BY nicht benötigen.