2012-01-28 49 views
0

的我有两个表:取不重复的记录与连接两个表

建设者

b_id fk_c_id 
1 1 
2 1 
3 1 
4 1 
5 1 
6 2 
7 2 

subbuilders

fk_b_id sb_id 
    1  2 
    1  3 
    1  4 
    2  5 
    6  7 

,我想Distinct b_id未在存在子建设者表和必须具有相同fk_c_id

创建:

SELECT DISTINCT b.id FROM pms_builder_to_subbuilders bsb 
LEFT JOIN pms_builders b ON b.id = bsb.sb_id WHERE b.fk_c_id = '1' 

,但它从subbuilders显示重复的记录。

+0

删除PHP5的标签,因为这是适用于MySQL的,不管是什么您用于访问mysql的编程语言 – giorgio 2012-01-28 12:14:29

+0

您可以重命名表和列名称作为示例数据以匹配您的查询吗? – piotrm 2012-01-28 12:22:00

回答

0

我想你想这个查询:

SELECT DISTINCT b_ID 
FROM builders 
WHERE b_ID NOT IN 
    (SELECT DISTINCT fk_b_id FROM subbuilders) 

但它返回

b_ID 
======== 
3 
4 
5 
7 

但我没有”了解你的陈述:must have same fk_c_id。你是什​​么意思?

b_id = fk_c_id 

如果是这样的话,那么就没有行返回,因为只记录1具有相同的B_ID和fk_c_id但在表中存在subbuilders

1

你可以用下面的查询所需的结果:

SELECT DISTINCT b.b_id FROM builders b LEFT JOIN subbuilders sb ON sb.fk_b_id = b.b_id WHERE b.fk_c_id = '1' AND ISNULL(fk_b_id);