Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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 SQL查询以查找不同产品之间的比较_Mysql_Sql - Fatal编程技术网

Mysql SQL查询以查找不同产品之间的比较

Mysql SQL查询以查找不同产品之间的比较,mysql,sql,Mysql,Sql,您好,我是SQL的新手,对跨多个表比较不同的产品有一个疑问。 我有三张桌子 T1: 产品类型 订单号 T2和T3也有相同的字段 所有表都有不同的产品类型。它们可能有也可能没有相同的订单ID。它就像您可以在相同的订单id o1上同时从T1订购产品p1和从T2订购产品p2,或者它们可以是单独的订单 我想找出T1的产品类型(p1)和T2的产品类型(p2)以相同的顺序(具有相同的订单id)订购的订单数量 我正在尝试按如下方式运行查询: select COUNT(DISTINCT order_id) as

您好,我是SQL的新手,对跨多个表比较不同的产品有一个疑问。 我有三张桌子

T1: 产品类型 订单号

T2和T3也有相同的字段

所有表都有不同的产品类型。它们可能有也可能没有相同的订单ID。它就像您可以在相同的订单id o1上同时从T1订购产品p1和从T2订购产品p2,或者它们可以是单独的订单

我想找出T1的产品类型(p1)和T2的产品类型(p2)以相同的顺序(具有相同的订单id)订购的订单数量

我正在尝试按如下方式运行查询:

select COUNT(DISTINCT order_id) as CountOf from
(
    select product_type from t1
    UNION ALL select product_type from t2
)
AS m
where t1.product_type = p1 and t2.product_type = p2;
我发现我不能在外部查询中访问t1和t2,因为它们在内部查询中使用。那么,有没有一种方法可以比较不同的产品呢? 任何帮助都将不胜感激。 谢谢

试试这个:

select
    count(distinct t1.order_id) as OrderCount
from
    t1
    inner join
    t2 on t1.order_id = t2.order_id
where
    t1.product_type = 'p1' and
    t2.product_type = 'p2'

我不明白你想要什么。 但内部查询范围仅限于括号。因此,您无法访问外部的括号。试试这个

select COUNT(DISTINCT order_id) as CountOf from
(
    select DISTINCT order_id from t1
    where t1.product_type = p1
    UNION ALL 
    select DISTINCT order_id from t2
    where t2.product_type = p2
) m

如果你喜欢,考虑下面简单的两步行动:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果您还没有这样做,请提供与步骤1中提供的信息相对应的所需结果集。这不会返回p1和p2在同一订单id上订购的计数。这似乎是他们所问的…您好,是的,我想了解p1和p2一起订购的订单数。您好,我试过了,但上面说订单号不明确。不知道这是什么意思。忘记限定表名,请立即尝试。它现在可以工作了。非常感谢。我只有一个疑问。有没有一种方法可以在一个查询中对多个订单执行此操作。或者我需要为不同的表和产品运行不同的join语句?这将统计包含表1中的产品类型p1和表2中的产品类型p2的所有订单。如果需要对不同的产品类型和/或不同的表进行计数,则需要调整查询。如果您只需要不同的产品类型组合,可以在where子句中进行更改。是的,我找到了。谢谢。