Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warunek przy pobieraniu z dwóch tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
Zajec
Mam dwie tabelki:

FILMY
# id
* tytul

WYPOZYCZENIA
# id
* film_id
* user_id

Chciałbym stworzyć listę filmów, które nie są przez nikogo wypożyczone. Doszedłem do prostego:

  1. SELECT f.id, f.tytul
  2. FROM filmy AS f, wypozyczenia AS w
  3. WHERE 1
  4. GROUP BY f.id


Czy może ktoś mi podpowiedzieć, jak dodać warunek na to, aby f.id nie występowało w żadnym w.film_id?
FiDO
Jesli masz mysql >= 4.1 to mozesz tak:
  1. SELECT id, tytul
  2. FROM filmy WHERE id NOT IN (SELECT film_id
  3. FROM wypozyczenia)


Jesli nie to trzeba JOIN'em.. ale OUTER JOIN'em, a to co Ty zdazyles zrobic to jest INNER JOIN, nie wyciagniesz takim rekordow bez swoich "odwzorowan" w tej drugiej tabeli, a wlasnie takie Ci potrzebne.

  1. SELECT f.id, f.tytul
  2. FROM filmy f
  3. LEFT JOIN wypozyczenia w ON w.film_id = f.id
  4. GROUP BY f.id
  5. HAVING COUNT(*) = 0
Zajec
Dziękuję :-) Im bardziej poznaję MySQL, tym bardziej go lubię :-)
SongoQ
No to poznaj inne bazki to bardziej polubisz SQL'a
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.