Mysql SQL查询以查找不同产品之间的比较
您好,我是SQL的新手,对跨多个表比较不同的产品有一个疑问。 我有三张桌子 T1: 产品类型 订单号 T2和T3也有相同的字段 所有表都有不同的产品类型。它们可能有也可能没有相同的订单ID。它就像您可以在相同的订单id o1上同时从T1订购产品p1和从T2订购产品p2,或者它们可以是单独的订单 我想找出T1的产品类型(p1)和T2的产品类型(p2)以相同的顺序(具有相同的订单id)订购的订单数量 我正在尝试按如下方式运行查询: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
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子句中进行更改。是的,我找到了。谢谢。