室的桌子>> ROOM_ID,標準如何從三個表
客桌>> guest_id,客人型
預訂表>> booking_id,ROOM_ID,guest_id
我的問題刪除是>刪除已預訂'豪華'房間的客人的記錄。 (豪華是一種標準)
請幫忙?做一個查詢我是一個SQL初學者。
室的桌子>> ROOM_ID,標準如何從三個表
客桌>> guest_id,客人型
預訂表>> booking_id,ROOM_ID,guest_id
我的問題刪除是>刪除已預訂'豪華'房間的客人的記錄。 (豪華是一種標準)
請幫忙?做一個查詢我是一個SQL初學者。
我假設你只是想從booking
表中刪除。我還假設你需要從guest
表中指定,否則根本不需要第三個表。
DELETE b
FROM booking b
INNER JOIN room r
ON r.room_id = b.room_id
INNER JOIN guest g
ON g.guest_id = b.guest_id
WHERE r.standard = 'Deluxe'
AND g.field = ????
但是,這是一個MS SQL擴展。 ANSI的方式是:
DELETE FROM booking b
WHERE EXISTS (
SELECT 1
FROM room r
WHERE r.room_id = b.room_id
AND r.standard = 'Deluxe')
AND EXISTS (
SELECT 1
FROM guest g
WHERE g.guest_id = b.room_id
AND g.field = ????)
房間表>> room_id,標準 客人表>> guest_id,賓客類型 預訂表>> booking_id,room_id,guest_id <<<<這些是我的表格和列我需要刪除的客人誰已預訂'豪華'房間「,這意味着我需要刪除陣風表格記錄.. – sandy
@sandy我不知道。 「已預訂'豪華'房間的客人」對我來說還不清楚。從邏輯上講,對我而言,只有從「預訂」中刪除纔是最有意義的。爲什麼你需要從'房間'刪除?沒有預訂房間意味着房間不存在?你爲什麼需要從'guest'中刪除?刪除'豪華'預訂是否意味着客人不能留在系統中供將來使用?如果他們預訂了其他房間標準呢?唯一對我有意義的刪除是預訂。 –
@sandy另一方面,如果您確實需要從'room'或'guest'和'booking'中刪除,那麼您需要使用多個刪除語句。 MS SQL Server不允許您在單個語句中從多個表中刪除。 –
可能的重複[Join DELETE in MySql?如何?](http://stackoverflow.com/questions/2685211/join-delete-in-mysql-how-to) –
不,我需要先加入這三個表 – sandy