3

私はいくつかの改訂を行っていますが、次のことを行う方法は次のとおりです。

「A Wilks」に属するビートルを削除</p>

person (driver-id, name, address)
car (license, model, year)
accident (report-number, date, location)
owns (driver-id, license) 
participated (driver-id, car, report-number, damage-amount)

ここに私が思いついたものがあります:

DELETE FROM car
WHERE model = 'beetle'

ただし、A Wilks が所有する 1 台だけでなく、すべてのビートル車が削除されるため、これが間違っていることはわかっています。

4

6 に答える 6

5
DELETE FROM car
WHERE model = 'beetle'
AND license = (
    SELECT o.license from owns o INNER JOIN person p
    ON o.driver-id = p.driver-id
    WHERE p.name = 'A Wilks'
)
于 2013-05-20T15:46:12.723 に答える
1
DELETE FROM car
WHERE model = 'Beetle' AND license IN (
  SELECT license
  FROM owns
  INNER JOIN Person ON owns.driver_id = person.driver_id
  WHERE person_name = 'A Wilks'

「A Wilks」に属するビートルが 1 つしかないことが確実な場合は、クエリの 2 行目のlicense =代わりに使用できます。license IN

そして、MySQL のコピーを手に取り、いくつかのクエリを試すことを検討してください。あなたは資料をよりよく学ぶでしょう:)

于 2013-05-20T15:46:52.020 に答える
0
DELETE FROM car 
USING car 
INNER JOIN owns 
INNER JOIN person
WHERE car.license=owns.license 
AND car.model='Beetle'
AND owns.driver-id=person.driver-id 
AND person.name='A Wilks';

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

于 2013-05-20T15:52:57.617 に答える
-3

車に所有者を追加して、次のことを行うことをお勧めします。

DELETE FROM car
WHERE model = 'beetle' and owner = 'ownername'

ownerに含まれていない限り、これは機能しませんcar

于 2013-05-20T15:46:01.877 に答える