Stronę tą wyświetlono już: 4442 razy
Drodzy Czytelnicy, jak zapewne już wiecie, życie to nie jest bajka tak więc czas zakasać rękawy i zapoznać się z nieco trudniejszymi zapytaniami zagnieżdżonymi i sposobem wyszukiwania danych w dwóch tabelach. Zanim jednak, to najpierw konieczne jest utworzenie w istniejącej już bazie danych library nie jednej a dwóch dodatkowych tabel:
users - tabela wypożyczających:
CREATE TABLE users ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name CHAR(255), surname CHAR(255) );rent - tabela, która będzie łączyła użytkownika z daną książką, ta tabela powinna mieć datę wypożyczenia i oddania książki, ale (mówiąc szczerze) na razie zostawmy to sobie na później:
CREATE TABLE users ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, id_book INT UNSIGNED, id_user INT UNSIGNED );
Ponieważ tabele w tej chwili świecą pustkami, wrzućmy do nich niezwłocznie kilka rekordów danych. Dla tabeli users:
I dla tabeli rent, ale (uwaga, uwaga) z wykorzystaniem polecenia SELECT wewnątrz polecenia INSERT:
Spójrzmy teraz, jak wspaniale wygląda nasza tabelka rent:
mysql> select * from rent; +----+---------+---------+ | id | id_user | id_book | +----+---------+---------+ | 1 | 1 | 12 | | 2 | 1 | 9 | | 4 | 4 | 8 | +----+---------+---------+ 3 rows in set (0.00 sec) mysql>
No cóż, szału nie ma, ale takie jest życie. Nie ma co płakać, czas wyświetlić wszystkie książki, jakie wypożyczył użytkownik o nazwisku Kowalski. Zapytanie będzie wyglądało tak:
I cóż my tu u licha mamy? Nie dość, że wykorzystane zostało zagnieżdżone polecenie SELECT to nawiązane zostało połączenie pomiędzy dwiema tabelami: books i rent.
Wynik powyższego zapytania wpisanego w konsoli będzie wyglądał następująco:
mysql> select books.title, books.author from books, rent where rent.id_book = books.id and rent.id_user = (select id from users where surname = 'Kowalski'); +------------------------+-----------------+ | title | author | +------------------------+-----------------+ | Rio Anaconda | W. Cejrowski | | Odyseja kosmiczna 2010 | Arthur C. Clark | +------------------------+-----------------+ 2 rows in set (0.00 sec) mysql>