SQL连接查询混淆-MySQL
我在MySQL中有三个表SQL连接查询混淆-MySQL,mysql,sql-server,join,inner-join,Mysql,Sql Server,Join,Inner Join,我在MySQL中有三个表 customers其中包含列{id、name和email} products具有列{id和name} 购买的包含{id,customer} product其中客户和产品分别是customers.id和products.id的索引 我对如何获得客户的姓名以及他购买的所有产品感到有点困惑。这是我所拥有的,它基本上返回所有可能的产品和客户组合,而不是特定的客户信息: SELECT customers.email, products.name FROM
其中包含列customers
{id、name和email}
具有列products
{id和name}
- 购买的
包含
{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的客户购买的所有产品,但事实并非如此。有人能帮我吗?您将显式连接和隐式连接混合在一起,因此产生了问题。 您可能有如下查询。此外,您已经将alias用于联接表,并且还需要在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
谢谢,这似乎很有效。似乎我的主要问题是FROM子句从所有表中提取信息,而不仅仅是从购买的表中提取信息。我在WHERE子句的问题中也有一个类型。顾客:但是你的解释很完美