Kasowanie z użyciem where na tablicy

Kasowanie z użyciem where na tablicy
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam tablicę typu int, która zawiera ID moich pakietów. Potrzebuję ją wypełnić i następnie na podstawie tych id skasować wszystkie odpowiadające rekordy w tabeli. Pytanie, jak zrobić warunek złączony, skoro mamy dostęp tylko do dynamicznie wypełnionej tablicy. Prosiłbym o pomoc.

Kopiuj
		DECLARE @PackagesIds Dictionaries.Id
		INSERT INTO @PackagesIds(Id)
			SELECT ID FROM dbo.PackagesDefinitions PD Where PD.ArticleID = @ArticleId -- @ArticleId podajemy jako argument procedury
		DELETE FROM dbo.PackagesFields WHERE PackageDefinitionID = @PackagesIds -- jak podać to jako warunek?
Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

IN (i1, i2, i3,...)

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3890
0

tak:

Kopiuj
DECLARE @PackagesIds Dictionaries.Id
        INSERT INTO @PackagesIds(Id)
            SELECT ID FROM dbo.PackagesDefinitions PD WHERE PD.ArticleID = @ArticleId -- @ArticleId podajemy jako argument procedury
        DELETE FROM dbo.PackagesFields WHERE PackageDefinitionID in (select id from @PackagesIds) -- jak podać to jako warunek?

Pytanie w jakim celu deklaracja @PackagesIds, skoro mozna od razu:

Kopiuj
        DELETE FROM dbo.PackagesFields 
        WHERE PackageDefinitionID in (SELECT ID FROM dbo.PackagesDefinitions PD WHERE PD.ArticleID = @ArticleId) 

  • Rejestracja: dni
  • Ostatnio: dni
0

Super, dzięki wielkie.

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.