Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie jednego zdjęcia z innej tabeli przy złączeniu
Forum PHP.pl > Forum > Bazy danych > MySQL
boomer
Witam

Mam dwie tabele. W jednej przechowuję nazwy budynków, w drugiej przechowuję ich zdjęcia.
W pierwszej ważne kolumny to:
placeID - klucz główny pierwszej tabeli
nazwa - nazwa budynku
opis - opis budynku

Druga tabela:
photoID - klucz główny
placeID - klucz obcy
nazwa_pliku - lokalizacja pliku ze zdjeciem

Silnik InnoDB

Pobieram dane zapytaniem (akceptacja służy do tego, że zdjecia i budynki musza byc najpierw zaakceptowane przez admina, $start, $stop to zakres budynków na stronie):

  1. <?php
  2. $sql = "select ciekawe_miejsca.nazwa, ciekawe_miejsca.opis, ciekawe_miejsca_zdjecia
    .file
  3. name from ciekawe_miejsca, ciekawe_miejsca_zdjecia
  4. where ciekawe_miejsca.gmina =$region and ciekawe_miejsca.placeID = ciekawe_
  5. iejsca_zdjecia.placeID and ciekawe_miejsca_zdjecia.akceptacja =1
  6. and ciekawe_miejsca.akceptacja =1 limit $start , $stop";
  7. ?>


Wadą tego jest, że wyswietla mi tyle razy budynek ile mam zdjec dla niego - oczywiscie jest to zgodne z zapytaniem, ktore wykonalem.
Moim celem jest aby dla kazdego budynku wyswietlic jedno zdjecie, nie zadajac przy tym dwoch zapytan.
Prosze Was o radę w jakim kierunku pojsc. Czy zrobić zapytanie w zapytaniu, czy w jakiś inny sposób to rozwiąć?
Pozdrawiam
Mario
woj_tas
Jeżeli dobrze zrozumiałem to musisz złączyć dwie tabele przez left join oraz pogrupować po ciekawe_miejsca.placeID. Spróbuj tak:

  1. SELECT
  2. ciekawe_miejsca.nazwa,
  3. ciekawe_miejsca.opis,
  4. ciekawe_miejsca_zdjecia.file name
  5. FROM ciekawe_miejsca LEFT JOIN ciekawe_miejsca_zdjecia ON ciekawe_miejsca_zdjecia.placeID=ciekawe_miejsca.placeID
  6. WHERE ciekawe_miejsca.gmina = '$region' AND ciekawe_miejsca_zdjecia.akceptacja =1 AND ciekawe_miejsca.akceptacja =1
  7. GROUP BY ciekawe_miejsca.placeID
  8. LIMIT $start , $stop
boomer
dzięki wielkie. zadziałało. Już wciskam pomógł.
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.