我是MySQL新手,这是我的第一个问题,如果有任何错误请原谅我。
我有 6个表我想使用 6个表来报告。我的一个报告访问所有6个表并按照我们编写的查询打印数据。现在问题是我写了我的查询但这将返回大量重复数据。如何避免指导我请。
SELECT
@rownum := @rownum + 1 AS RowNumber,
a.vnumber,a.vname,
b.eid,b.name,b.mobile,
c.vid,c.emp_id,c.pick_place,c.start_time,c.drop_place,c.stop_time,
c.pickupkm,c.drops,c.type_of_trip,c.travelkm,c.tamt,c.dates,
d.vid,d.emp_id,d.expcal,d.exp1,d.exp2,d.exp3,
d.exp4,d.exp5,d.expamt,d.expdesc,d.dates,
e.emp_id,e.vid,e.opeing_km,e.opeing_cash,e.closing_km,
e.closing_cash,e.opeing_date,e.opeing_time,e.closing_date,
e.closing_time, f.vid,f.emp_id,
f.totkm,f.totamt,f.expenses,f.handover_amt,
f.balance_amt,f.handover_to,f.plstatus,f.entry_date
from
add_vehicle a
LEFT JOIN third_table c ON a.vnumber=c.vid
LEFT JOIN add_employees b ON b.eid=c.emp_id
LEFT JOIN fourth_table d ON a.vnumber=d.vid
LEFT JOIN shift e ON b.eid=e.emp_id
LEFT JOIN five_table f ON a.vnumber=f.vid,
(SELECT @rownum := 0) r
WHERE
c.type_of_trip IS NOT NULL AND
c.dates BETWEEN '2017-04-01' AND '2017-04-19' AND
d.dates BETWEEN '2017-04-01' AND '2017-04-19' AND
f.entry_date BETWEEN '2017-04-01' AND '2017-04-19' AND
c.vid='STAT01' AND f.vid='STAT01' AND c.emp_id='1' AND
f.emp_id='1' AND e.emp_id='1'
ORDER BY c.dates,f.entry_date DESC
抱歉SQL小提琴无法正常工作。
这是我的表格和样本数据。
答案 0 :(得分:0)
也许您可以使用您想要独特的列“分组依据”,或使用“distinct”
答案 1 :(得分:0)
您可以使用GROUP BY功能来避免重复数据。只需将group by用于那些您想要独特的数据。示例如下
GROUP BY eid
最后添加此查询,以避免同一员工。
您也可以使用INNER JOIN