Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL连接查询混淆-MySQL_Mysql_Sql Server_Join_Inner Join - Fatal编程技术网

SQL连接查询混淆-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

我在MySQL中有三个表

  • 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子句的问题中也有一个类型。顾客:但是你的解释很完美