2013-02-15 96 views
1

我有一个MySQL数据库,我想作出具体的选择。下面是这种情况:使用Mysql数据库从两个SQL表中的数据的特定选择

第一台

货物运输车辆道路列表的数据。

roadListNumber(primary_key), vehicle, driver, startWorkTime, endWorkTime and so on. 

第二表

货物与所述第一表的主键映射区域。

roadListNumber(foreign_key), zoneId, timeInside, spentMoney and so on. 

的问题是,不是每一个车辆进入到货物区等等一些道路列表不与货物区(第二个表),并在此映射来我的问题,这样的问题:

如何我可以从第一个表格中选择所有路线清单,并将第二个表格(货运区域)的结果与跳过没有与货运区域对应的路标吗?

+2

使用'left join' – 2013-02-15 11:41:08

回答

1

你已经使用了正确的字(JOIN)。您可以使用LEFT OUTER JOIN以获取第一个(或左侧)表中的所有记录,并根据ON子句将它们与第二个(或右侧)表中的相应记录相关联。

通知的的使用留下表术语在这里和它如何与LEFTOUTER JOIN.

如果有第二表中没有匹配的记录,你会得到NULL在第二台的结果集中的列。

SELECT * FROM roadlist rl 
    LEFT OUTER JOIN cargozones cz ON rl.roadlistnumber = cz.roadlistnumber 

JOIN有很多种。例如,如果您使用的是INNER JOIN,则只会获得第二张表上匹配的记录。

查看此博客文章,了解SQL联接如何工作的良好视觉解释:Coding Horror: A Visual Explanation of SQL Joins

2

您可以使用LEFT JOIN获取数据......还用GROUP BY避免重复数据..

SELECT rl.roadListNumber,rl.vehicle,cz.zoneId,cz.spentMoney 
FROM road_list rl 
LEFT JOIN cargo_zone cz on (rl.roadListNumber=cz.roadListNumber) 
GROUP BY rl.roadListNumber 
相关问题