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