Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyświetleniem pojedynczego rekordu z nazwą obrazka w JOIN
Forum PHP.pl > Forum > Bazy danych > MySQL
Sokrates
Witam mam taki problem,
łącze parę tabel za pomocą JOIN nazwa_tabeli skrót_tabeli on (reguła_filtracji),
problem jest taki ze pobieram nazwy obrazków po 'product_id' tabeli 'mACMS2_catalog_products', ale pod danym 'gallery_pid' tabeli 'mACMS2_catalog_galleries'
może być parę obrazków, wtedy rekordy które mi sie wyświetlają zawierają ostatni obrazek z danym 'gallery_pid' tabeli 'mACMS2_catalog_galleries'
a ja bym chciał aby to był pierwszy obrazek z danym 'gallery_pid' tabeli 'mACMS2_catalog_galleries' .

Moje obecne zapytanie wygląda tak:
  1. SELECT P.product_id, P.product_name, P.product_description, P.product_price, P.product_ktm,
  2. C1.category_name AS podkategoria, C2.category_name AS kategoria, G.gallery_photo,
  3. P2.producer_name AS producent
  4. FROM mACMS2_catalog_products P
  5. JOIN mACMS2_catalog_categories C1 ON ( C1.category_id = P.product_category )
  6. JOIN mACMS2_catalog_categories C2 ON ( C2.category_id = C1.category_parent )
  7. JOIN mACMS2_catalog_producers P2 ON ( P2.producer_id = P.product_producer )
  8. JOIN mACMS2_catalog_galleries G ON ( G.gallery_pid = P.product_id )
  9. WHERE P.product_active = '1'


ale wyświetla ostatnią nazwę obrazka z tabeli 'mACMS2_catalog_galleries'

probowałem to zrobić za pomocą 'ORDER BY'
Zapytanie wyglądało wtedy tak:
  1. SELECT P.product_id, P.product_name, P.product_description, P.product_price, P.product_ktm,
  2. C1.category_name AS podkategoria, C2.category_name AS kategoria, G.gallery_photo,
  3. P2.producer_name AS producent
  4. FROM mACMS2_catalog_products P
  5. JOIN mACMS2_catalog_categories C1 ON ( C1.category_id = P.product_category )
  6. JOIN mACMS2_catalog_categories C2 ON ( C2.category_id = C1.category_parent )
  7. JOIN mACMS2_catalog_producers P2 ON ( P2.producer_id = P.product_producer )
  8. JOIN mACMS2_catalog_galleries G ON ( G.gallery_pid = P.product_id )
  9. WHERE P.product_active = '1'
  10. ORDER BY G.gallery_photo DESC LIMIT 0, 1


oraz za pomocą 'GROUP BY'
Zapytanie wyglądało wtedy tak:
  1. SELECT P.product_id, P.product_name, P.product_description, P.product_price, P.product_ktm,
  2. C1.category_name AS podkategoria, C2.category_name AS kategoria, G.gallery_photo,
  3. P2.producer_name AS producent
  4. FROM mACMS2_catalog_products P
  5. JOIN mACMS2_catalog_categories C1 ON ( C1.category_id = P.product_category )
  6. JOIN mACMS2_catalog_categories C2 ON ( C2.category_id = C1.category_parent )
  7. JOIN mACMS2_catalog_producers P2 ON ( P2.producer_id = P.product_producer )
  8. JOIN mACMS2_catalog_galleries G ON ( G.gallery_pid = P.product_id )
  9. WHERE P.product_active = '1'
  10. GROUP BY G.gallery_photo DESC LIMIT 0, 1


ale obydwa powyższe przykłady wyświetlają tylko jeden rekord a nie całą listę rekordów z pierwszym zdjęciem z tabeli 'mACMS2_catalog_galleries'

Czy możecie mi pomóc może gdzieś robie błąd, literówkę a może przy łączeniu tabel w ogóle nie jest to możliwe.

Wielkie dzięki za jakąkolwiek pomoc...
piotrekkr
Spróboj tak:
  1. SELECT P.product_id, P.product_name, P.product_description, P.product_price, P.product_ktm,
  2. C1.category_name AS podkategoria, C2.category_name AS kategoria, G.gallery_photo,
  3. P2.producer_name AS producent
  4. FROM mACMS2_catalog_products P
  5. LEFT JOIN mACMS2_catalog_categories C1 ON ( C1.category_id = P.product_category )
  6. LEFT JOIN mACMS2_catalog_categories C2 ON ( C2.category_id = C1.category_parent )
  7. LEFT JOIN mACMS2_catalog_producers P2 ON ( P2.producer_id = P.product_producer )
  8. LEFT JOIN mACMS2_catalog_galleries G ON ( G.gallery_pid = P.product_id )
  9. WHERE P.product_active = '1'
  10. GROUP BY P.product_id DESC ORDER BY P.product_id, G.gallery_pid ASC
Sokrates
Udało sie działa :-) ,

dopiero teraz zauważyłem że moja pierwsza wersja zapytania
zwraca tyle rekordów produktu ile jest zdjęć do tego produktu.

Dzięki i pozdrawiam,...
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.