我有一个客户信息的MySQL表。我有另一张桌子,上面有他们可以选择的物品。我有第三个表,列出了客户端选择的项目。每个客户都可以选择零个或多个项目。
e.g。
Client Table:
clientID
clientName
...
Item Table:
itemID
itemName
Purchase Table:
purchaseID
clientID
itemID
我知道我可以有一个查询来抓取所有客户端,然后为每个客户端运行一个查询,该查询将获取他们选择的所有项目的用户友好名称(如果有的话)。
有没有办法可以编写一个查询来获取客户端信息以及他们选择的所有项目?如果他们只能选择一个项目,我只会做一个左连接,但是因为他们可以选择多个项目,所以我不确定该怎么做。
我的目标是拥有这样的东西:
Client Name | Item Name | Item Name | Item Name | ...
John | Shoes | <empty> | <empty>
Claire | Shoes | Socks | <empty>
Marie | <empty> | Socks | Shirts
答案 0 :(得分:1)
我完全不理解这个问题,但是标准连接只返回匹配的值,所以我从你的结果中假设你不想要的东西。如果您如上所述离开了加入客户,这将返回所有客户,无论他们是否有任何项目或购买,这与您的示例类似。
SELECT
*
FROM CLIENT C
LEFT JOIN Purchase P ON C.clientID = P.clientID
JOIN Item I on I.itemID = P.itemID;