Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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
在mysql中使用JOIN和subquery_Mysql_Sql_Sql Server_Select_Join - Fatal编程技术网

在mysql中使用JOIN和subquery

在mysql中使用JOIN和subquery,mysql,sql,sql-server,select,join,Mysql,Sql,Sql Server,Select,Join,大约两周前,我发布了一个关于SQL表之间“一对多”关系的问题。现在我有一个不同的场景。基本上,有两个表-咖啡用户和咖啡产品注册。后者通过“uid”列连接到coffee_users表。基本上,coffee_users.uid=coffee_product_registrations.uid 一个用户可以注册多个产品 我想做的是显示一些产品信息(来自coffee_product_注册)以及一些用户信息(来自coffee_用户),但只检索那些有1个以上产品注册的行 为了简化,我需要采取以下步骤: 连接

大约两周前,我发布了一个关于SQL表之间“一对多”关系的问题。现在我有一个不同的场景。基本上,有两个表-咖啡用户和咖啡产品注册。后者通过“uid”列连接到coffee_users表。基本上,coffee_users.uid=coffee_product_registrations.uid

一个用户可以注册多个产品

我想做的是显示一些产品信息(来自coffee_product_注册)以及一些用户信息(来自coffee_用户),但只检索那些有1个以上产品注册的行

为了简化,我需要采取以下步骤:

  • 连接两个表
  • 选择已注册多个产品的用户
  • 展示他们所有的产品以及他们的名字和物品
  • 我当前的SQL查询如下所示:

    SELECT c.uid, c.name, cpr.model 
    FROM coffee_users c 
    JOIN coffee_product_registrations cpr on c.uid = cpr.uid
    GROUP BY c.uid 
    HAVING COUNT(cpr.uid) > 1
    
    这将联接“uid”列上的两个表,但每个用户只显示一行。它只选择注册了多个产品的用户

    现在我需要使用这些ID,并根据它们从coffee_product_注册中选择所有产品


    我不知道如何在一个查询中使用这个

    用要从查询中提取的列替换
    cpr.*,c.*

    试试这个:

    SELECT cpr.*, c.*
    FROM coffee_product_registrations cpr 
    INNER JOIN coffee_users c ON c.uid = cpr.uid
    INNER JOIN (SELECT cpr.uid 
                FROM coffee_product_registrations cpr 
                GROUP BY cpr.uid 
                HAVING COUNT(DISTINCT cpr.productId) > 1
               ) AS A ON c.uid = A.uid;
    

    返回一个空结果。那么我应该有两个内连接吗?我可以不要吗?好的,我现在就要。谢天谢地。我已经创建了两个用户名——user1和user2。user1有2个产品在coffee_product_注册下注册,user2只有1个。因此,查询应该选择user1的所有产品,并且除了显示user1的电子邮件和ID之外,还显示这两个产品。我不确定您所说的表格式是什么意思,但我试图实现的是:显示注册了多个产品的用户的所有产品,每个产品都应该同时显示用户的电子邮件和ID。一个用户可以他们想注册多少产品就注册多少。我只想选择注册了1个以上产品的用户,然后我想显示这些用户拥有的每个产品的产品详细信息。