2017-04-19 58 views
-1

我对MySQL很新,也是我的第一个问题,如果有任何错误,请原谅我。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小提琴不工作。

这是我的表格和示例数据。

My sample data

+1

添加示例数据和预期输出 –

+1

你可能有多个记录匹配,从另一个表中的一条记录中的一个表。请向我们提供样本数据,使用您当前的查询在样本数据上收到的实际结果以及预期结果。 – Shadow

+0

好吧我尝试添加朋友 –

回答

0

也许你可以使用“分组依据”按列你希望是唯一的,或者用“独特”

+0

我更新我的问题与示例数据 –

0

您可以使用GROUP BY功能,为了避免重复的数据。只要使用group by来处理那些想要独一无二的数据。下面的示例

GROUP BY eid 

在最后添加此查询以避免同一员工。

您也可以使用INNER JOIN