通过连接表进行复杂的SQL查询

时间:2013-12-11 08:15:39

标签: sql

我有一台带有3个fiedls的桌面电脑:join_c_idjoin_pid和类型。 join_c_id是名为clients的表格的FK。 join_p_id是名为parkings的表格的FK。

类型可以是1,2,3。

我必须 当我从停车场删除记录时,我必须: 1)删除停车与type = 1的客户之间的关联 2)删除所有其他关联到clients(类型!= 1)但是只有这些客户端有 与其他停车场没有其他联系。

假设我将PC作为:

`join_c_id` | `join_p_id` | type
---------------------------------
    1           1           1
    2           1           2
    3           1           3
    3           1           1

当我从parkings删除ID为1的记录时,我想删除ID为1,2而不是3的clients(因为3有另一个关联)。有人可以帮我提一些暗示吗?

2 个答案:

答案 0 :(得分:0)

 DELETE FROM clients WHERE id IN  
             (SELECT join_c_id FROM PC WHERE  
                     PC.join_pratiche_id=%d AND  
                     join_c_id NOT IN 
                     (SELECT join_c_id FROM PC WHERE 
                      join_p_id != %d)
              ) 

我正在删除%d == <the id of parking>(示例中为= 1)。

答案 1 :(得分:0)

尝试排除不仅仅是1&amp;的类型的cid 2,欢呼

DELETE FROM tbl_sample
WHERE PID = 1
AND [TYPE] IN(1,2)
AND [CID] NOT IN ((select CID FROM TBL_SAMPLE WHERE [TYPE] NOT IN (1,2)))

参考文献:http://sqlfiddle.com/#!6/adffb/10