Usuwanie z tabeli

NW
  • Rejestracja: dni
  • Ostatnio: dni
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ć:

Kopiuj
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.

AP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3079
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.

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

A dlaczego nie tak?

Kopiuj
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' )

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.