Usuwanie z tabeli

0

Cześć,

mam takie zadanko: Usuń wiersze z tablicy order_details dla takich zamówień, które powstały 14 kwietnia
1998 oraz 17 lipca 1999.

Mamy tabelę order_details, w której jest pole OrderID oraz tabelę orders, w której jest OrderID oraz OrderDate. Czyli wystarczy zwykłym inner join'em je połączyć, jednak taki kod nie chce zadziałać:

DELETE FROM order_details
WHERE OrderID IN (
SELECT OrderID
FROM order_details
INNER JOIN orders USING (OrderID)
WHERE OrderDate = '1998-04-14' OR OrderDate = '1999-07-17' )

Dlaczego?

Zrobiłem to co prawda na temporary tablle i działa, jednak jest dosyć długi i dzieli się na dwa zapytania po kolei, więc nie za bardzo mi się to podoba, no chyba, że nie da się inaczej?

Pozdrawiam i dzięki za pomoc.

0

Niepotrzebnie podzieliłeś te zapytanie na dwa. Najpierw wyszukujesz rekordy, później usuwasz te, które są w zebranym zbiorze id-ków. Poczytaj o używaniu INNER JOIN w zapytaniu DELETE FROM.

0

A dlaczego nie tak?

DELETE FROM order_details
WHERE OrderID IN (
SELECT o.OrderID
FROM orders o
WHERE o.OrderDate = '1998-04-14' OR o.OrderDate = '1999-07-17' )

1 użytkowników online, w tym zalogowanych: 0, gości: 1