Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Where warunkowo
Forum PHP.pl > Forum > Przedszkole
oomaster
Witam,

Mam 2 tabele:
ogloszenia
-id
-title
-status

ogloszenia_foto
-id
-img
-ogloszenie


I oczywiście w tabeli ogloszenia_foto jest kilka rekordów pasujących do ogloszenia. Próbuję walczyć aby wyświetlić tylko jeden pasujący rekord z ogloszenia_foto do ogloszenia a wywala mi wszystkie, oraz żeby ustawić status konkretny dla wszystkich ogłoszeń do wyświetlenia.
Chciałbym uzyskać taką tabelę:
ogloszenia
-id2
-title
-status=3
-img

Takim zapytaniem próbowałem ale ma 2 wady. Wyświetlają się wyniki tylko które mają zdjęcia i na dodatek się powielają (wyświetlają się tyle ile jest zdjęć)
  1. SELECT *,ogloszenia.id AS id2, ogloszenia_foto.img FROM ogloszenia,ogloszenia_foto WHERE ogloszenia_foto.ogloszenie=ogloszenia.id AND ogloszenia.STATUS='3'
viking
  1. SELECT * FROM
  2. ogloszenia o
  3. WHERE o.id = (SELECT id FROM ogloszenia_foto of WHERE of.id=o.id LIMIT 1)
oomaster
  1. SELECT *,ogloszenia.id AS id2 FROM ogloszenia WHERE ogloszenia.id = (SELECT id FROM ogloszenia_foto WHERE ogloszenia_foto.ogloszenie=ogloszenia.id LIMIT 1)


  1. SELECT *,ogloszenia.id AS id2, ogloszenia_foto.img
  2. FROM ogloszenia,ogloszenia_foto
  3. WHERE ogloszenia.id = (SELECT id FROM ogloszenia_foto WHERE ogloszenia_foto.id=ogloszenia.id LIMIT 1) AND ogloszenia.STATUS='3'


wszystko niby jest OK ale Żadne z powyższych zapytań nie zwraca żadnego rekordu :-/

EDIT:
Troche inaczej kombinuje i już jest rezultat, zwraca prawidłowo ogloszenia lecz pole img jest NULL.

  1. SELECT ogloszenia.id, ogloszenia_foto.img
  2. FROM ogloszenia LEFT JOIN ` ogloszenia_foto` ON ogloszenia.id = (SELECT id FROM ogloszenia_foto WHERE ogloszenia_foto.ogloszenie= ogloszenia.id LIMIT 1) WHERE ogloszenia.STATUS='3'


Co w tym zapytaniu może być źle ?

EDIT2:
Problem rozwiązany, rozwiązanie:
  1. SELECT DISTINCT ogloszenia.id, ogloszenia_foto.img
  2. FROM ogloszenia LEFT JOIN `ogloszenia_foto` ON ogloszenia.id = ogloszenia_foto.ogloszenie WHERE ogloszenia.STATUS='3' GROUP BY id
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.