复杂DELETE SQL查询

时间:2017-08-05 05:01:22

标签: mysql sql

我需要创建一个SQL QUERY,它将删除album表中的记录,但前提是签名的客户端满足以下要求:

// Variables as a demonstration
const signedClientId = 1;
const albumIdToDelete = 2;

要求

  1. 客户在clients_albums
  2. 中有相关的相册
  3. ---- ----
  4. 相册存在于domains_albums表格中,而客户端是域名的所有者
  5. 我有5张桌子:

    1. 专辑 - id |名称
    2. 客户 - id | first_name |姓氏
    3. domains - id |所有者(fk - >客户)|名称
    4. clients_albums - client(fk - > clients)|专辑(fk - >专辑)
    5. domains_albums - domain(fk - > domains)|专辑(fk - >专辑)

1 个答案:

答案 0 :(得分:3)

我认为这应该可以解决问题:

DELETE 
FROM albums
WHERE album_id IN 
(SELECT album_id 
 FROM clients_albums
 WHERE client_id = @CLIENTID)
OR
WHERE album_id IN
(SELECT album_id
 FROM domain_albums JOIN domains ON domain_albums.album = albums.id
 WHERE domains.owner = @CLIENTID)

@CLIENTID是一个占位符,您可以在任何查询系统中传递客户端ID。