我對此查詢有問題,因爲它刪除了所選CNP的所有行,我只能刪除Nume_Excursie='Vacanta1'
中的那一行。SQL Server上的查詢執行有誤
當我運行沒有第一行的查詢時,它只查找一行,但是當我運行整個查詢時,它刪除了所有的行,我真的不知道爲什麼。
- 客戶端(ID_Client,CNP,日期,...)
- 期(ID,ID_Client,ID_Excursie,..)
- Excursie(ID_Excursie,Nume_Excursie,..)
delete from perioada
where
Perioada.ID_Client =
(select distinct p.ID_Client
from Perioada p
join Client c on p.ID_Client = c.ID_Client
where (c.CNP = 'xxxxx..'
and p.ID_Excursie = (select e.id_excursie
from Excursie e
where e.Nume_Excursie = 'Vacanta1')))
你爲什麼要從perioada中刪除並在ID_Client上進行匹配而不是在ID_Perioda上進行匹配? ID_Client不是唯一的(你的鏈接顯示兩行的值都是3),但是它們的ID_Perioda是唯一的。 – wentimo
ID_Client(客戶端中唯一 - 主鍵)是Perioada中的外鍵。在接口中,我只能使用CNP和Name_Excursie。這就是我以這種方式編寫查詢的原因。 – lx23