2013-05-08 89 views
0

这两个表是“成本”和“联系人”。所有卖家和买家的名字都在“联系人”表中。随着下面的查询我检索卖方和买方对每个项目的ID,但我想从“联系人”表MySQL从一行中的一个表中获得多个结果

SELECT 
costs.id as ID, 
costs.idContactPayedBy, 
costs.idContactPayedTo 

FROM costs 

WHERE 
costs.idbuilding=286 

得到他们的名字,但我想从联系人表中获取卖家和买家的名字

SELECT 
costs.id as ID, 
contacts.lastname as seller, 
contacts.lastname as buyer 

FROM costs , contacts 

WHERE 
costs.idbuilding=286 
and costs.idContactPayedBy = contacts.id 
and costs.idContactPayedTo = contacts.id 

所以期望的结果是这样的

ID Seller Buyer 
21 jackson Brown 
29 Bush  wilson 

回答

2
SELECT 
c.id as ID, 
cntby.lastname as seller, 
cntto.lastname as buyer 

FROM costs AS c 
INNER JOIN contacts AS cntby ON c.idContactPayedBy = cntby.id 
INNER JOIN contacts AS cntto ON c.idContactPayedTo = cntto.id 
WHERE c.idbuilding=286 

注1:使用INNER JOIN仅当idContactPayed[By/To]列为必填项(NOT NULL)。如果这些列允许空值,那么您应该使用LEFT OUTER JOIN。在我看来,这两栏应该是强制性的。

注2:作为款式:请避免old style joins (ANSI 86/89)FROM table1 a, table2 b WHERE <join condition>

+0

非常感谢Bogdan。 – 2013-05-08 12:49:37

相关问题