Do tej pory rozważaliÅ›my podzapytania odnoszÄ…ce siÄ™ do kolumn (podzapytania skalarne), tzn. podzapytania, które zwracajÄ… pojedynczÄ… wartość kolumny. Podzapytanie wierszowe jest takim podzapytaniem, które zwraca jeden wiersz, i tym samym może zwrócić wiÄ™cej niż jednÄ… wartość kolumny. Na przykÅ‚ad patrz Listing 1.0 lub 2.0. W obydwu przypadkach wartoÅ›c zapytania jest równa TRUE jeÅ›li tylko tablica tab2 zawiera wiersz, w którym col1 = 1, i col2 = 2. Wyrażenie (1,2) i ROW(1,2) sÄ… czasem nazywane konstruktorami wierszowymi. SÄ… też poprawne w troche innym kontekÅ›cie. Na przykÅ‚ad, nastÄ™pne dwa zapytania sÄ… skÅ‚adniowo równoważne:(lisitng 3.0) Normalnie, konstruktorów wieszowych używa siÄ™ w celu porównania z podzapytaniami, które zwracajÄ… wartoÅ›ci dówch lub wiÄ™cej kolumn. Na przykÅ‚ad, wykonanie nastepujÄ…cego zapytania: (patrz listing 4.0) da nam wynik: "wszystkie wiersze, w tablicy tab1 które istniejÄ… też w tablicy tab2".
Listing
SELECT * FROM tab1 WHERE (1,2) = (SELECT col1, col2 FROM tab2);
--Listing 2.0
SELECT * FROM tab1 WHERE ROW(1,2) = (SELECT col1, col2 FROM tab2);
--Listing 3.0
SELECT * FROM tab1 WHERE (col1,col2) = (1,1);
SELECT * FROM tab1 WHERE col1 = 1 AND col2 = 1;
--Listing 4.0
SELECT col1,col2,col3
FROM tab1
WHERE (col1,col2,col3) IN
(SELECT col1,col2,col3 FROM tab2);
Ranga: Administrator serwisu Punktów: 38473

