Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Zapytanie z JOIN
Forum PHP.pl > Forum > Przedszkole
mirobor
Mam takie o to zapytanie:
  1. SELECT *, COUNT(f.id) AS vot
  2. FROM votes v JOIN films f ON (v.film_id = f.id)
  3. GROUP BY f.id
  4. ORDER BY id ASC

Jego wadą jest to że pokazuje tylko pozycje dla których relacja istnieje, pomijając inne z tabeli films. Próbuję je zmodyfikować, tak, aby pozycje z films bez relacji z votes także były pobierane. Poczytałem i kombinuję z LEFT JOIN, ale nie mogę tego zapytania właściwie zmodyfikować.
Pozdrawiam
nospor
Jak slusznie zauwazyles masz uzyc LEFT JOIN.
Ino ze glowną tabelą ma byc FILMS a JOINowaną tabela z glosami. Przeciez chcesz wyswietlic wszystkie filmy
kartin
Może być też RIGHT JOIN.
nospor
Ja tam jestem zwolennikiem LEFT JOIN - jest dla mnie bardziej logiczny, może dlatego ze cale zycie czytam od lewa do prawa a nie na odwrot wink.gif
Poza tym
Cytat
RIGHT JOIN works analogously to LEFT JOIN. To keep code portable across databases, it is recommended that you use LEFT JOIN instead of RIGHT JOIN.
mmmmmmm
Ta. SQLite nie ma RIGHT smile.gif
mirobor
Wykonując w phpmadmin:
  1. SELECT *, COUNT(f.id) AS vot
  2. FROM votes v RIGHT JOIN films f ON (v.film_id = f.id)
  3. GROUP BY f.id
  4. ORDER BY id;

jak również:
  1. SELECT *, COUNT(v.id) AS vot
  2. FROM films v LEFT JOIN votes f ON (v.id = f.film_id)
  3. GROUP BY v.id
  4. ORDER BY id;


vot przybiera wartość 1 dla filmów bez głosów.
Co powinienem zrobić aby ustawić kolejność rosnącą i wyświetlić poprzez skrypt pozycje rosnąco wg oddanych głosów od 0(brak głosów)?
nospor
  1. SELECT *, COUNT(f.film_id) AS vot
  2.  
  3. FROM films v LEFT JOIN votes f ON (v.id = f.film_id)
  4.  
  5. GROUP BY v.id
  6.  
  7. ORDER BY id;

Patrz co zliczasz.... tongue.gif
kartin
Bez LEFT | RIGHT nie miało to znaczenia w której tabeli zliczałeś ID filmu, jednak teraz ma.
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-2025 Invision Power Services, Inc.