Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak uzyskać DISTINCT na jednej z kolumn?, przy złączeniu LEF JOIN
Przemek1
post 21.02.2006, 12:08:16
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.11.2005

Ostrzeżenie: (0%)
-----


Witam! Mam taki problem!
Wybieram rekordy z tabel: "artykuly" i "zdjecia". Nie wszystkie artykuły mają odpowiadające im zdjęcia dlatego stosuję LEFT JOIN, żeby nie "pogubić" artykułów bez zdjęć. Z kolei część artykułów ma więcej niż jedno zdjęcie, co powoduje powstawanie dodatkowych wierszy z tym samym artykułem i różnymi zdjęciami. Zależy mi, żeby mieć dokładnie tyle wierszy ile jest artykułów, i do każdego z nich kolumnę z pierwszym znalezionym zdjęciem, lub NULL, jeśli nie ma zdjęcia.
  1. SELECT artykuly.*, zdjecia.nazwa_pliku
  2. FROM artykuly
  3. LEFT JOIN zdjecia ON zdjecia.art_id = artykuly.id

DISTINCT nie pomaga, bo uzyskane wiersze różnią się "zdjecia.nazwa_pliku". Próbowałem też zrobić wersję z podzapytaniem:
  1. SELECT artykuly.*, zdjecia.nazwa_pliku
  2. FROM artykuly
  3. LEFT JOIN (SELECT zdjecia.*
  4. FROM zdjecia,
  5. artykuly WHERE zdjecia.art_id = artykuly.id LIMIT 1) AS zdjecia ON zdjecia.art_id = artykuly.id


Ale to nie działa, bo podzapytanie wybiera pierwsze lepsze zdjęcie z tabeli, które później nie jest dołączane, bo nie pasuje do odpowiedniego artykułu.

Czy jest jakieś proste (albo skomplikowane) rozwiązanie, żeby zrobić limit wybranych wierszy poprzez unikalność kolumny - czyli u mnie a.id?
Będę wdzięczny za wszelką pomoc.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:23