Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
milupo2nd
Witam,
Mam problem z zapytaniem, ktory rysuje sie nastepujaco:
Sa trzy tabele: userzy,userzy_maja_zdjecia i zdjecia. Problem polega na tym ze chce wyciagnac: idusera, imie i tytul_zdjecia ale tylko jesli jest to zdjecie domyslne (czyli w tabeli userzy_maja_zdjecia pole default jest rowne Y) w przeciwnym wypadku tutul_zdjecia ma byc NULL. Jak to zrobic?
Za nic nie moge wykminic takiego zapytania. Powiem jeszcze ze moze sie tak zdarzyc ze niektorzy userzy moga w ogole nie miec zdjec albo moga miec zdjecia ale nie maja ani jednego ustawionego w polu domyslne na Y. (dodam ze dla jednego usera moze byc tylko jedno zdjecie z ustawionym polem domyslne na Y)
Probowalem juz left join ale cos to mi nie wychodzi (tzn. bierze pierwsze lepsze zdjecie zamiast tylko to z flaga domyslne:Y)
Jakies sugestie?

  1. --------------------------
  2. userzy
  3. (user_id,imie)
  4. --------------------------
  5. 1 , janek
  6. 2 , piotrek
  7. 3 , pawel
  8. --------------------------


  1. ---------------------------------
  2. userzy_maja_zdjecia
  3. (user_id, foto_id, domyslne)
  4. ---------------------------------
  5. 1 , 1 , Y
  6. 1 , 2 , N
  7. 2 , 3 , N
  8. 2 , 4 , Y
  9. 3 , 5 , N
  10. ---------------------------------


  1. ---------------------------------
  2. zdjecia
  3. (foto_id, tytul_zdjecia)
  4. ---------------------------------
  5. 1 , fota1
  6. 2 , fota2
  7. 3 , fota3
  8. 4 , fota4
  9. 5 , fota5
  10. ---------------------------------
kefirek
  1. SELECT u.user_id, u.imie,
  2. CASE domyslne WHEN 'Y' THEN tytul_zdjecia ELSE '' END AS foto
  3. FROM userzy_maja_zdjecia mz LEFT JOIN zdjecia z ON mz.foto_id=z.foto_id
  4. LEFT JOIN userzy u ON mz.user_id=u.user_id


Chyba o takie coś chodziło ?

Zapytanie takie zwróci
milupo2nd
wiekie dzieki ale kurcze nie do konca to jest to o co mi chodzilo... bo jesli nie ma rekordu w users_has_photos to taki user jest pomijany w wynikach sad.gif

p.s.
Zrobilem cos takiego tylko nie wiem czy to jest dobrze:

  1. SELECT * FROM users LEFT JOIN users_has_photos ON (users.iduser=users_has_photos.iduser AND DEFAULT='Y')
  2. LEFT JOIN photos ON users_has_photos.idphoto=photos.idphoto
  3. GROUP BY users.iduser
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.