MSSQL subquerry w WHERE

0

Dzień dobry.

Chce porównać dwie subquerry po klauzuli WHERE a mianowicie:
Czy wszystkie wyniki jednego subquerry znajdują się gdziekolwiek w drugiej. (obie zwracają 1 kolumnę)

W jaki sposób skonstruować poprawnie takie zapytanie?

0

Pisane "z palca", czyli mogą być błędy:

WITH where1(kolumna) AS (SELECT kolumna FROM <coś tam 1> WHERE <warunek 1>),
        where2(kolumna) AS (SELECT kolumna FROM <coś tam 2> WHERE <warunek 2>)
        join1(kolumna, gdzie) AS (SELECT kolumna, CASE (where2.kolumna IS NULL) THEN 1 ELSE 0 END AS gdzie FROM where1 LEFT JOIN where2 ON where1.kolumna = where2.kolumna)
SELECT kolumna,
           CASE WHEN (join1.kolumna IS NULL) THEN -1 ELSE join1.gdzie END AS gdzie
FROM join1
RIGHT JOIN where2 ON join1.kolumna = where2.kolumna

i mamy 0, jeśli jest w obu, 1, jeśli w jednym i -1 jeśli w drugim

1

@Sadam2, po co tak utrudniać?

with 
	t1 as(select 1 x union select 3 union select 4),
	t2 as(select 1 x union select 2 union select 4 union select 5)
select 
	coalesce(t1.x, t2.x), 
	t1.x, 
	t2.x
from 
	t1 full join t2 
	on t1.x=t2.x
0
Marcin.Miga napisał(a):

@Sadam2, po co tak utrudniać?

No sam nie wiem, po co. Żeby odpalić na serwerze 2005?

0
Sadam2 napisał(a):
Marcin.Miga napisał(a):

@Sadam2, po co tak utrudniać?

No sam nie wiem, po co. Żeby odpalić na serwerze 2005?

Tknęło mnie i sprawdziłem. Marcin, Twoje na 2k5 też działa. Dokumentacji nie poprawili, czy co.

0

Troche długie i pokrętne wasze rozwiązania ale dziękuje za pomoc
Pomogł mi następujący kod

NOT EXISTS
        (
            SELECT
                [subquerry1_column]
            FROM
                [subquerry]
            EXCEPT
            SELECT
                [subquerry2_column]
            FROM
                [subquerry2]
        )           
1

moje długie i pokrętne? Pierwszxe 3 linijki to utworzenie tabel z ktorych ma brac dane...
A twoje? NOT EXISTS z EXCEPT w podzapytaniu? Musisz mieć albo super maszynę, albo bardzo mało danych...

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