我有三张桌子:
customers: id, name
transactions: id_customer, id_item
items: id, name
我想写一个简单的查询,它将返回订购商品名称为'apple'的所有客户的名字
我知道我可以这样做:
SELECT
name
FROM
customers
WHERE id IN (SELECT
id_customer
FROM
transactions
WHERE id_item IN (SELECT
id
FROM
items
WHERE name = 'apple'))
这可能不是太糟糕,但似乎有点费解,并且可能有一种更直接的方式来加入这个?
答案 0 :(得分:2)
是的,在这种情况下使用联接肯定更好。试试这个:
SELECT DISTINCT
A.name
FROM
customers A INNER JOIN
transactions B ON A.id = B.id_customer INNER JOIN
items C ON B.id_item = C.id
WHERE C.name = 'apple'
通过这种方式,只会显示下达包含'apple'
的订单的客户。
答案 1 :(得分:0)
使用Join案例,这是一种最好的方法。
Select C.name from Customers C
Inner Join Transaction T on C.id = T.id_customer
Inner Join Items I on T.id_items = I.id
where I.name = "Apple"
以上查询将返回订购“Apple”的所有客户的姓名。