繁体   English   中英

MySQL从一行中的一个表中获得多个结果

[英]MySQL get multiple result from one table in one row

两个表是“成本”和“联系人”。 所有卖家和买家的名字都在“联系人”表中。 使用以下查询我检索每个项目的卖方和买方的ID,但我想从“联系人”表中获取他们的名字

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
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:仅当idContactPayed[By/To]列是必需的( NOT NULL )时才使用INNER JOIN 如果这些列允许空值,那么您应该使用LEFT OUTER JOIN 在我看来,两列都应该是强制性的。

注2:作为一种风格:请避免旧式连接(ANSI 86/89)FROM table1 a, table2 b WHERE <join condition>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM