Usuwanie wiersza

valverde12345
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Witam,
Chce napisać coś takiego, że usuwana wiersze z tabeli Order Details jeśli znajduje się on w niżej napisanym SELECT' cie.

Kopiuj
delete from [Order Details] 
where OrderID in(select * from [Order Details] as O join Orders on O.OrderID = Orders.OrderID
	where Orders.OrderDate = cast('1998/04/14 00:00:00' as datetime) or 
	Orders.OrderDate = cast('1999/07/17 00:00:00' as datetime))

I wszystko byłoby fajnie, ale nie ma żadnego pola w Order Details, które występuje tylko raz. Próbowałem napisać warunek, że OrderID in(select..) and ProductID in(select) i tak wszystkie pola, ale nie przeszło.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

A masz jakiś PK lub UNIQUE index?

LD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 115
1

O ile ten select nie zwroci Ci jednej kolumny to ten zapis jest jest niepoprawny.

Kopiuj
 SELECT * FROM [ORDER Details] AS O JOIN Orders ON O.OrderID = Orders.OrderID
    WHERE Orders.OrderDate = CAST('1998/04/14 00:00:00' AS datetime) OR 
    Orders.OrderDate = CAST('1999/07/17 00:00:00' AS datetime)

zamiast * napisz

Kopiuj
DISTINCT O.ORDERID

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.