[ Pobierz całość w formacie PDF ]
.au_fname, au1.au_lname,au2.au_fname, au2.au_lname,au1.city, au1.zipFROM authors au1, authors au2WHERE au1.city = au2.cityAND au1.zip = au2.zipAND au1.au_id < au2.au_idORDER BY au1.city, au1.zipPreferowana skÅ‚adnia ANSISELECT au1.au_fname, au1.au_lname,au2.au_fname, au2.au_lname,au1.city, au1.zipFROM authors au1INNER JOIN authors au2 ON au1.city = au2.cityAND au1.zip = au2.zipWHERE au1.au_id < au2.au_idORDER BY au1.city, au1.zipau_fname au_lname au_fname au_lname city zip-------- -------- ------- --------- ------------- -----Cheryl Carson Abraham Bennet Berkeley 94705Dean Straight Dirk Stringer Oakland 94609Dean Straight Livia Karsen Oakland 94609Dirk Stringer Livia Karsen Oakland 94609Ann Dull Sheryl Hunter Palo Alto 94301Anne Ringer Albert Ringer Salt Lake City 84152(6 row(s) affected)Warto zauważyć, że w przypadku przeprowadzania na tablicy zÅ‚Ä…czenia wÅ‚asnego, zostaje stworzony alias dla nazwy tablicy.Jest on używany, aby jedna tablica jest logiczne traktowana jako dwie osobne tablice.Alias tablicy jest przydatny w sytuacji, gdy jest wykonywana operacja zÅ‚Ä…czenia wielu tablic.Pozwala on na utworzenie bardziej czytelnego i krótszego zapytania, ponieważ wystÄ™pujÄ… odniesienia do aliasu tablicy zamiast bezpoÅ›rednio do nazwy tablicy.PodzapytaniaPolecenie SELECT , które jest zagnieżdżone w innym poleceniu SELECT, zwane jest potocznie podzapytaniem.Podzapytania mogÄ… tworzyć takie same wyniki, jak operacja zÅ‚Ä…czenia.W kolejnych częściach zostanie omówione stosowanie podzapytaÅ„, ich typy, ograniczenia stosowania i podzapytania skorelowane.Stosowanie podzapytaÅ„Polecenie SELECT może być zagnieżdżone w innym poleceniu SELECT, INSERT, UPDATE lub DELETE.Jeżeli podzapytanie zwraca pojedynczÄ… wartość, takÄ… jak wartość zagregowana, może być używane wszÄ™dzie tam, gdzie dozwolona jest pojedyncza wartość.Jeżeli podzapytanie zwraca listÄ™, na przykÅ‚ad pojedynczÄ… kolumnÄ™ z wieloma wartoÅ›ciami, może być używane jedynie w klauzuli WHERE.W wielu przypadkach zamiast podzapytania może być używana operacja zÅ‚Ä…czenia.Jednak niektóre kopie mogÄ… być obsÅ‚ugiwane jedynie przez podzapytania.Niekiedy operacja zÅ‚Ä…czenia powoduje lepszÄ… wydajność niż podzapytanie, ale zasadniczo nie ma tutaj zbyt wielkiej różnicy.Podzapytanie jest zawsze zamkniÄ™te w nawiasach zwykÅ‚ych, chyba że wykonywane jest podzapytanie skorelowane, zakoÅ„czone zanim rozpocznie siÄ™ wykonywanie zapytania zewnÄ™trznego.Podzapytanie może zawierać inne podzapytanie, a to z kolei może zawierać kolejne, itd.Oprócz zasobów systemu nie ma praktycznego ograniczenia liczby podzapytaÅ„, jakie mogÄ… być wykonywane w jednym zapytaniu.SkÅ‚adnia zagnieżdżonego polecenia SELECT jest nastÄ™pujÄ…ca:[SELECT [ALL | DISTINCT] subquery_column_list[FROM table_list][WHERE clause][GROUP BY clause][HAVING clause]Typy podzapytaÅ„Podzapytanie może powodować zwrócenie pojedynczej kolumny lub wartoÅ›ci tam, gdzie może być używane wyrażenie z pojedynczÄ… wartoÅ›ciÄ… i porównywane za pomocÄ… operatorów: =, <, >, <=, >=, <>, !> i !<.Może ono zwracać pojedynczÄ… kolumnÄ™ lub wiele wartoÅ›ci, które mogÄ… być używane w liÅ›cie operatora porównania IN w klauzuli WHERE.Podzapytanie może zwracać również wiele wierszy — mogÄ… być one stosowane w sprawdzaniu istnienia wartoÅ›ci za pomocÄ… sÅ‚owa kluczowego EXISTS w klauzuli WHERE
[ Pobierz całość w formacie PDF ]