SQL Join Query Confusion - MySQL

时间:2015-02-15 18:32:18

标签: mysql sql-server join inner-join

我在MySQL中有三个表。

  • customers,其中包含{id, name, and email}
  • products,其中包含{id and name}
  • purchased,其中包含{id, customer}
  • product客户和产品分别是customers.idproducts.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的客户购买的所有产品,但事实并非如此。有人可以帮助我吗?

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