我有三张桌子:A,B和C,B是打破多对多关系所需的表格:
table A table B table C
------- ------- -------
id id id
.... id_A ...
.... id_C ...
我有两个多选html对象两个显示结果,在第二个我需要两者的交集,这是一个简单的内连接。
问题是第一个问题,我需要在那里显示所有项目都可用,因此不能在两者中显示相同的项目。
在第一次,为了填充第一个多选,我只是做一个表A左连接与表B,其中B.id为空,这是好的:
select * from tableA as A
left join tableB as B on A.id = B.id_A
where B.id_A is null
但在那之后我意识到存在问题,因为如果有另一个关系AC,这个关系将出现在multiselect中,所以我尝试了:
select * from tableA as A
left join tableB as B on A.id = B.id_A
where B.id_A is null or B.id_C != $id
并且不起作用,我需要一种方法来显示每次更改id_C时第一次多次选择可用和不重复的选项
我希望有人可以帮助我:)。
答案 0 :(得分:1)
试试这个,
SELECT tableC.field1,tableC.field2 来自tableC LEFT JOIN tableB ON tableC.ID = tableB.ID_C AND tableB.ID_A = $ ID_A WHERE tableB.ID_A为NULL GROUP BY tableC.field1,tableC.field2
答案 1 :(得分:0)
尝试将distinct
放在*
之前:select distinct * from ...