|
Kurs MySQL - korzystanie z kilku tabel
Korzystanie z więcej niż jednej tabeli Tabela
Biorąc powyższe pod uwagę, instrukcja
mysql> CREATE TABLE zdarzenia (imie VARCHAR(20), data DATE,
-> typ VARCHAR(15), opis VARCHAR(255));
Tak jak w przypadku tabeli
Wczytaj rekordy instrukcją:
mysql> LOAD DATA LOCAL INFILE "zdarzenia.txt" INTO TABLE zdarzenia;
Bazując na tym, czego nauczyłeś się tworząc zapytania dla tabeli Przypuśćmy, że chcesz poznać wiek każdego zwierzęcia, w jakim miało młode. Tabela
mysql> SELECT zwierze.imie, (TO_DAYS(date) - TO_DAYS(urodzony))/365 AS wiek, opis
-> FROM zwierze, zdarzenia
-> WHERE zwierze.imie = zdarzenia.imie AND type = "młode";
+--------+------+-----------------------+
| imie | age | opis |
+--------+------+-----------------------+
| Fluffy | 2.27 | 4: 3 samice, 1 samiec |
| Buffy | 4.12 | 5: 2 samice, 3 samce |
| Buffy | 5.10 | 3: 3 samice |
+--------+------+-----------------------+
Wyjaśnijmy kilka rzeczy dotyczących powyższego zapytania:
Nie musisz mieć dwóch różnych tabel, aby wykonać łączenie. Czasami potrzebne (lub przynajmniej bardzo wygodne) jest łączenie tabeli
z nią samą, jeżeli chcesz wykonać porównanie rekordów z tabeli z innymi rekordami z tej samej tabeli. Np.: aby znaleźć parę
potencjalnych "rodziców" wśród zwierząt, możesz połączyć tabelę
mysql> SELECT p1.imie, p1.plec, p2.imie, p2.plec, p1.gatunek
-> FROM zwierze AS p1, zwierze AS p2
-> WHERE p1.gatunek = p2.gatunek AND p1.plec = "z" AND p2.plec = "m";
+--------+------+--------+------+---------+
| imie | plec | imie | plec | gatunek |
+--------+------+--------+------+---------+
| Fluffy | z | Claws | m | kot |
| Buffy | z | Fang | m | pies |
| Buffy | z | Bowser | m | pies |
+--------+------+--------+------+---------+
W powyższym zapytaniu użyliśmy aliasów do nazw tabel, aby odróżnić pola o identycznych nazwach z - w sumie - tej samej tabeli.
|