Mysql SQL:如果行(在另一个表中)存在,则选择一个新列,该列为true

Mysql SQL:如果行(在另一个表中)存在,则选择一个新列,该列为true,mysql,sql,Mysql,Sql,我的表中有如下列: Customer: cid, blah Product: pid, blah Order: cid, pid 1 1 false 1 2 true 1 3 true 1 4 false 2 1 true 2 2 false 2 3 false 2 4 true 3 1 false 3 2 false 3 3 true 3 4 false 我想要包含以下列的结果表: Customer: cid, blah Product: pid, b

我的表中有如下列:

 Customer: cid, blah

 Product: pid, blah

 Order: cid, pid
1 1 false

1 2 true

1 3 true

1 4 false

2 1 true

2 2 false

2 3 false

2 4 true

3 1 false

3 2 false

3 3 true

3 4 false
我想要包含以下列的结果表:

 Customer: cid, blah

 Product: pid, blah

 Order: cid, pid
1 1 false

1 2 true

1 3 true

1 4 false

2 1 true

2 2 false

2 3 false

2 4 true

3 1 false

3 2 false

3 3 true

3 4 false
cid,pid,(当该行的(cid,pid)顺序为“false”时,此列为“true”)

例如:

 Customer: cid, blah

 Product: pid, blah

 Order: cid, pid
1 1 false

1 2 true

1 3 true

1 4 false

2 1 true

2 2 false

2 3 false

2 4 true

3 1 false

3 2 false

3 3 true

3 4 false
客户

1 blah

2 blah

3 blah
1 2

1 3

2 1

2 4

3 3
产品

1 blah

2 blah

3 blah

4 blah
订单

1 blah

2 blah

3 blah
1 2

1 3

2 1

2 4

3 3
我想找到具有以下结果的sql查询:

 Customer: cid, blah

 Product: pid, blah

 Order: cid, pid
1 1 false

1 2 true

1 3 true

1 4 false

2 1 true

2 2 false

2 3 false

2 4 true

3 1 false

3 2 false

3 3 true

3 4 false
我试图找出那个疑问,但仅限于我的知识。有人知道如何写这个查询吗

//对不起,忘了提一下我希望结果中也包含客户和产品的废话

cid, blah, pid, blah, true/false
你需要一份案例陈述


您可以
交叉
连接和
大小写..当
条件语句为:

   select c.cid, p.pid,  
          ( case when o.cid*o.pid > 0 then 'true' else 'false' end ) 
                    as flag
     from product p
    cross join customer c
    left join order_ o on o.cid = c.cid and o.pid = p.pid   
   order by c.cid, p.pid;
p.S.订单是一个关键词,所以我用订单

这是最简单的方法:


请阅读并采取行动,点击谷歌的“stackexchange家庭作业”和向下投票箭头鼠标悬停文本。我认为工会下的代码不起作用。O中没有任何一行不是C交叉连接P中的。我认为应该是
客户C交叉连接产品P
而不是
订单O
。您执行了吗?+1,因为这是最好的方法。但是,我不认为需要
coalesce(o.cid,0)*coalesce(o.pid,0)
。检查任何一个字段就足够了,因为左连接基于两个条件(两列)。