[#] Pobranie wyniku z wielu tabel - SQL UNION

( Ostatnio zmieniony śr., 11/06/2008 - 08:54 )
 

Za pomocą operatora UNION możemy dodać wyniki poszczególnych zapytań (czyli zwiększyć liczbę wierszy wyniku. Złączenia JOIN zwiększały liczbę kolumn, złączenie UNION zwiększa liczbę wierszy). Łączone wyniki muszą składać się z takiej samej liczby kolumn, a poszczególne kolumny muszą być tego samego typu, poza tym konieczne jest, aby występowały one w tej samej kolejności w obu wynikach

Złączenie wyników dwóch prostych zapytań

SELECT nazwisko FROM klienci
UNION
SELECT opis FROM pozycje;
+--+
| nazwisko          |
+++
| Jarusinek         |
| Jarusinek         |
| Jarusinek         |
| Homerak           |
| Homerak           |
| Nowak             |
| Nowak             |
| Nowak             |
| Nowak             |
| Nowak             |
| Nowak             |
| Halke             |

| Koszulki          |
| Płyty CD          |
| Pocztówki         |
| Ramka na zdjęcia  |
| Puzzle            |
+--+

Przykład pokazujący domyślne usuwanie duplikatów z wyników złączenia UNION

SELECT pozycja_id FROM pozycja UNION SELECT pozycja_id FROM zamowienia;
++
| pozycja_id |
++
| 1       |
| 2       |
| 3       |
| 4       |
| 5       |
| 6       |
| 7       |
| 8       |
| 9       |
| 10      |
| 11      |
| 12      |
++

jeśli jednak chcemy duplikaty użyjmy (ALL)

SELECT pozycja_id FROM pozycja UNION ALL SELECT pozycja_id FROM zamowienia;
++
| pozycja_id |
++
| 1       |
| 2       |
| 3       |
| 4       |
| 5       |
| 6       |
| 7       |
| 8       |
| 9       |
| 10      |
| 11      |
| 12      |
| 1       |
| 2       |
| 4       |
| 5       |
| 7       |
| 8       |
| 10      |
++
3
Twoja ocena: Brak Średnio: 3 (8 głosów)