iT邦幫忙

0

大家好,我是MYSQL新手
最近在想一個問題但一直解不出來
想問的是

select c.food from a1,b,c where userid="1" and a1.可以吃=b.list and b.note1=c.note1
//結果:可以吃:蘋果、咖啡
select c.food from a2,b,c where userid="1" and a2.不能吃=b.list and b.note1=c.note1
//結果:不能吃:蘋果、牛奶

這兩條搜尋有一個共同的結果"蘋果"
所以想問一下 如果是這樣的狀況
該如何以"不能吃"的結果為主,讓"可以吃"裡的"蘋果"消失?

讓結果呈現為: 可以吃:咖啡 , 不能吃:蘋果、牛奶

table a1
userid 可以吃
1    A
2    C
3    D
4    B


table a2
userid 不能吃
1    D
2    A
3    B
4    C


table b
list note1
A  A1
A  A2
B  B1
B  A2
C  A1
C  B1
D  A1
D  D1

table c
note1  food
A1    蘋果
A2    咖啡
B1    橘子
D1    牛奶

1 個回答

0
pcw
iT邦研究生 5 級 ‧ 2018-03-07 18:47:39
最佳解答

第一個sql改為

select c.food AS 可以吃 
from a1, b, c 
where 
  userid = "1" 
  and a1.可以吃 = b.list 
  and b.note1 = c.note1 
  and not c.food in (select c.food from a2, b, c where userid = "1" and a2.不能吃 = b.list and b.note1 = c.note1);
imbaby iT邦新手 5 級 ‧ 2018-03-09 01:19:10 檢舉

謝謝可以使用了~~~剛學這個對語法還不太熟/images/emoticon/emoticon16.gif

pcw iT邦研究生 5 級 ‧ 2018-03-09 08:16:51 檢舉

沒關係!多思考多練習就會熟練了。
我也是這樣過來的。

我要發表回答

立即登入回答