1
我有三個表,它們共享一個公共字段(our_id
)。MySQL:從兩個表中獲取結果,在第三個中計數匹配
our_id
是Table1中的主鍵。
our_id
在表2和表3中也存在零次或多次。
我想選擇其中our_id
同時存在於表1和表2的記錄,但我還需要指望有多少次our_id
發生在表3(甚至只是是否our_id
存在,或者未在表3)。
我想出了這一點:
SELECT Table1.*, Table2.*, COUNT(Table3.*) AS table3_count
FROM Table1, Table2, Table3
WHERE Table1.our_id = Table2.our_id
AND Table1.our_id = Table3.our_id;
...但如果our_id
存在於表3,它可以這樣做,只是返回結果。
所以,我想:
SELECT Table1.*, Table2.*, COUNT(Table3.*) AS table3_count
FROM Table1, Table2, Table3
WHERE Table1.our_id = Table2.our_id
AND (Table1.our_id = Table3.our_id
OR NOT EXISTS (SELECT * FROM Table3
WHERE Table1.our_id=Table3.our_id));
但是,這只是跑啊跑......
我需要它仍然返回結果,其中同時存在於表1和表2 our_id
,並且告訴我有多少次(或是否)存在於Table3中。
預先感謝您!
這聽起來是正確的!我剛剛嘗試過,並且出現錯誤:'#1054 - 'on clause'中的未知列'Table1.our_id',但該表和字段完全存在(我已經檢查了十幾次拼寫現在!)。 – JoLoCo
是否正確?你可能想嘗試給所有的表別名來解決這個問題。 '從Table1 t1,Table2 t2',然後使用'ON t1.our_id = t3.our_id'。我不知道什麼可能是錯的,但也許這兩件事中的一件會幫助你。 –
啊,我明白了!我必須在「FROM」行的Table1和Table2之間進行交換(所以第二行讀取'FROM Table2,Table1')。非常感謝您的幫助,我非常感謝。 – JoLoCo