skanuj0298 (2)

skanuj0298 (2)



312 PHP i MySQL dla każdeg:

Złączenie typu LEFT JOIN

Złączenie typu LEFT JOIN pozwala na uwzględnienie w wyniku danych, które nie mają swoich odpowiedników w złączanych tabelach. Oznacza to, że jeżeli w pierwszej tabeli znajdują się wiersze, które (ze względu na warunek złączenia) nie mają swoich odpowiedników w drugiej tabeli, i tak zostaną uwzględnione w złączeniu, a w puste kolumny zostaną wpisane wartości NULL. Takie zestawienia mogą być bardzo użyteczne. Powróćmy do przykładu z książkami i autorami. Może się również zdarzyć, że w tabeli Książki znajdą się dane książki, dla której nie będzie wpisu w tabeli Autorzy. Będzie to oczywiście błąd polegający na niespójności danych w bazie, ale jest to całkiem realna sytuacja. Uzupełnijmy więc tabelę Ksi azki, tak aby zawierała dane:

Książki

1 Id |

Autorld | Tytuł

| ISBN |

1 I 1

1 | Uczeń Skrytobójcy

| 8389004976 |

1 2 |

1 j Królewski Skrytobójca

| 8389004933 |

1 3 |

1 j Wyprawa Skrytobójcy

| 8389004941 |

1 4 1

2 | W ułamku sekundy

| 8323810915 |

1 5 1

2 | Łowca dusz

| 8323816514 |

1 6 |

2 | Dotyk Zła

| 8323805547 |

1 1 1

3 | Nie mów nikomu

| 8387834211 |

1 8 |

3 j Bez skrupułów

| 8388722255 j

1 9 1

3 | Bez pożegnania

| 8387834238 |

1 io |

5 | Klin

| 8385103201 |

Tabelę Autorzy pozostawmy bez zmian. Książka o identyfikatorze 10 ma autora o identyfikatorze 5. Taki identyfikator nie istnieje jednak w tabeli Autorzy. W takiej sytuacji zwyczajne zapytanie w postaci:

SELECT tytuł. imię. nazwisko, isbn FROM książki INNER JOIN autorzy ON książki.autorid-autorzy.id;

będzie miało taki sam wynik, jak przedstawiony w poprzedniej sekcji. Ponieważ w tabeli Książki nie ma książek napisanych przez autora o identyfikatorze 4, w tabeli wynikowej nie pojawiają się żadne dodatkowe wiersze. Zgubimy zatem dane jednej z książek. Zupełnie inaczej będzie jednak w przypadku złączenia LEFT JOIN. Jeśli zastosujemy instrukcję:

SELECT tytuł. imię. nazwisko, isbn FROM książki LEFT JOIN autorzy ON książki.autorid-autorzy.id:

w wyniku pojawią się dane książki o tytule Klin, a w kolumnach dotyczących imienia i nazwiska autora — wartości NULL, tak jak jest to widoczne na rysunku 11.3. W ten sposób mamy dane wszystkich książek, nawet jeśli są one niespójne.

W bardzo prosty sposób uzyskamy także dane wszystkich książek, dla których nie istnieją wpisy w tabeli Autorzy. Wystarczy wykonać zapytanie:

SELECT tytuł. imię. nazwisko, isbn. autorld

FROM książki LEFT JOIN autorzy ON książki.autorid-autorzy.id

WHERE autorzy.id is nuli:


Wyszukiwarka

Podobne podstrony:
skanuj0300 (2) 314 PHP i MySQL dla każdego Rysunek 11.5. mysql> SELECT tytuł, imię, nazwisko, isb
skanuj0327 (2) 342 PHP i MySQL dla każdego ♦    Id — typu INTEGER, przechowujące unik
skanuj0329 (2) 344 PHP i MySQL dla każdego ♦    Nr domu — typu VARCHAR, przechowującą
skanuj0351 (2) 366 PHP i MySQL dla każdegoZapytania typu SELECT W przypadku zapytań typu SELECT funk
skanuj0411 (3) 428 PHP i MySQL dla każdego ♦    Userld — typu INTEGER, będąca kluczem
13127 skanuj0456 (2) 474 PHP i MySQL dla każdego ♦    Id — typu INTEGER, będąca klucz
36926 skanuj0309 (2) 324 PHP i MySQL dla każdego Tabela 11.2. Typy tabel w MySQL Nazwa typu Opis

więcej podobnych podstron