左边连接有一些相交

时间:2011-02-02 13:14:13

标签: php mysql

我有三张桌子: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时第一次多次选择可用和不重复的选项

我希望有人可以帮助我:)。

2 个答案:

答案 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 ...