Удаление записи из таблицы зависит от значения другой таблицы - PullRequest
0 голосов
/ 13 сентября 2018

Привет, я новичок в sql. Я все еще учусь любому совету или помощи, я буду очень признателен.

У меня есть две таблицы: первая таблица (tbl1) будет показывать только список идентификатора и описания, а вторая таблица (tbl2) перечисляет все cx, используя идентификатор. Идентификатор столбца tbl1 имеет общее значение в tbl2 (tbl2.address ссылки tbl1.id). Я пытаюсь удалить запись в идентификаторе tbl1, в которой статус в этом идентификаторе только Готово.

tbl1

id     |       description
-------+----------------------
addA   |         address A
addB   |         address B
addC   |         address c


tbl2 

id        |    address    |   Status    
----------+---------------+-------------
jk1ii     |     addA      |   using
hhh9      |     addA      |   pending
ajjdia    |     addA      |   done
jhis99    |     addB      |   done
ajduio    |     addC      |   using

Желаемый вывод для tbl1

id    |  description
------+-----------------
addA  |    address A
addC  |    address c

будет удален только addB, потому что ни один другой cx, использующий адрес, в отличие от addA и addC, еще не использует этот адрес, так что он не будет удален, возможно?

сейчас я использую этот запрос

DELETE from tbl1
WHERE id  in (select address FROM tbl2 WHERE status ='Done')

однако вывод неправильный, он удалит addA, хотя там все еще есть какой-то cx в tbl2

1 Ответ

0 голосов
/ 13 сентября 2018

Попробуйте запрос ниже:

DELETE from tbl1
WHERE id  in (select address FROM tbl2 group by address having sum(case when status='Done' then 0 else 1 end)=0)
...