我在MySQL中有三个表。
customers
,其中包含{id, name, and email}
列products
,其中包含{id and name}
列purchased
,其中包含{id, customer}
product
客户和产品分别是customers.id
和products.id
的索引。我对如何获得客户的名字以及他购买的所有产品感到有些困惑。这就是我所拥有的,它基本上返回了所有可能的产品和客户组合,而不是特定的客户信息:
SELECT
customers.email,
products.name
FROM
customers, products, purchased
INNER JOIN
customers cu
ON
cu.id = purchased.customer
INNER JOIN
products pr
ON
pr.id = purchased.product
WHERE
purchased.customer = 1
我希望这会返回ID为1的客户购买的所有产品,但事实并非如此。有人可以帮助我吗?
答案 0 :(得分:2)
您正在混合显式和隐式连接,从而产生问题。 您可以查询如下。此外,您已经为连接表使用了别名,并且还需要在select中使用它们。
SELECT cu.email, pr.name FROM purchased
INNER JOIN customers cu
ON cu.id = purchased.customer
INNER JOIN products pr
ON pr.id = purchased.product
WHERE pr.customer = 1