1

これらすべての結果を、reserveringsnr に基づくこのクエリから削除したいと考えています。

(SELECT DISTINCT res.reserveringsnr, datum, begintijd, eindtijd, aantalpersonen, klantnr, betaald, tafr.tafelnr, menr.reserveringsnr, menr.menunr, menr.uniqueid FROM reserveringen as res
    INNER JOIN menus_regel as menr
    ON res.reserveringsnr = menr.reserveringsnr
    INNER JOIN tafels_regel AS tafr
    ON res.reserveringsnr = tafr.reserveringsnr
    WHERE res.reserveringsnr = '21')

しかし、このようなものはうまくいかないようです

DELETE FROM 
(SELECT DISTINCT res.reserveringsnr, datum, begintijd, eindtijd, aantalpersonen, klantnr, betaald, tafr.tafelnr, menr.reserveringsnr, menr.menunr, menr.uniqueid FROM reserveringen as res
    INNER JOIN menus_regel as menr
    ON res.reserveringsnr = menr.reserveringsnr
    INNER JOIN tafels_regel AS tafr
    ON res.reserveringsnr = tafr.reserveringsnr
    WHERE res.reserveringsnr = '21')Delete
WHERE Delete.reserveringsnr = '21'

誰かが私を正しい方向に少し押すことができますか? 前もって感謝します!

4

2 に答える 2

1

以下のクエリは、テーブル上のすべてのレコードreserveringenのみを削除します。

DELETE  res
FROM    reserveringen as res
        INNER JOIN menus_regel as menr
            ON res.reserveringsnr = menr.reserveringsnr
        INNER JOIN tafels_regel AS tafr
            ON res.reserveringsnr = tafr.reserveringsnr
WHERE   res.reserveringsnr = '21'

ただし、一致したすべてのテーブルからレコードを削除する場合は、句reserveringsnrですべてのテーブル名を指定する必要がありますDELETE

DELETE  res, menr, tafr
FROM    reserveringen as res
        INNER JOIN menus_regel as menr
            ON res.reserveringsnr = menr.reserveringsnr
        INNER JOIN tafels_regel AS tafr
            ON res.reserveringsnr = tafr.reserveringsnr
WHERE   res.reserveringsnr = '21'
于 2013-01-14T15:51:05.943 に答える
1

1行で行う必要がある場合、@ JWの答えは正しいようです。ただし、パフォーマンス上の問題から、これらを別々の行で実行することをお勧めします。各テーブルに多数のレコードがある場合、結合は個々の削除よりも時間がかかります。

DELETE 
FROM reserveringen  
WHERE reserveringsnr = '21';

DELETE 
FROM menus_regel 
WHERE reserveringsnr = '21';

DELETE 
FROM tafels_regel 
WHERE reserveringsnr = '21'

ただし、削除に関する便利なリンクは次のとおりです。

http://dev.mysql.com/doc/refman/5.0/en/delete.html

于 2013-01-14T15:58:16.223 に答える