topbi Opublikowano 23 Października 2005 Udostępnij Opublikowano 23 Października 2005 Mam następujący problem: tablica stor_produkty - zawiera unikalne produkty tablica stor_galeria - może zawierać kilka zdjęć do jednego produktu SELECT t1.numer, t1.kat_id, t1.nazwa, t1.cena, t1.krotki_opis, t2.obraz FROM stor_produkty AS t1 INNER JOIN stor_galeria as t2 ON t1.numer=t2.produkt_id where aktywne=1 Łącząc te dwie tablice dostaje listę produktów z nazwą zdjęcia produktu. Problem w tym że do jednego produktu może być kilka zdjęć a potrzebuje tylko jedno i do tego dokładnie pierwsze Jak probuje tak: SELECT DISTINCT t1.numer, t1.kat_id, t1.nazwa, t1.cena, t1.krotki_opis, t2.obraz FROM stor_produkty AS t1 INNER JOIN stor_galeria as t2 ON t1.numer=t2.produkt_id where aktywne=1 to dostaje tylko jedno ale to ostatnie ze zbioru dla danego produktu a zależy mi aby wynik zwracał pierwszy rekord Wszelkie pomysły na rozwiązanie zagadnienia mile widziane. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
proks Opublikowano 23 Października 2005 Udostępnij Opublikowano 23 Października 2005 Nie chodzi przypadkiem o dodanie na końcu: LIMIT 1 Nie wiem czy zadziałą w przypadku łączenia tabel, ale nie widzę powodu, żeby miało nie zadziałać, proponuję więc spróbować Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
topbi Opublikowano 23 Października 2005 Autor Udostępnij Opublikowano 23 Października 2005 Trochę sprecyzowałem o co dokładnie mi chodzi. Wersja z LIMIT 1 niestety nie da dobrego wyniku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Elf Opublikowano 24 Października 2005 Udostępnij Opublikowano 24 Października 2005 Jakbys w drugim zapytaniu odwrocil kolejnosc podawania tabel... Jest 2. w nocy, wiec nie wiem czy bedzie dzialac Oficjalna strona serii Football Manager ( FM 2005, FM 2006 ) - CM Revolution Forza MLKS Woźniki Śląskie! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
.Grzesiek Opublikowano 24 Października 2005 Udostępnij Opublikowano 24 Października 2005 SELECT DISTINCT ON(numer) FROM ( SELECT t1.numer, t1.kat_id, t1.nazwa, t1.cena, t1.krotki_opis, t2.obraz FROM stor_produkty AS t1 INNER JOIN stor_galeria as t2 ON t1.numer=t2.produkt_id where aktywne=1 ) AS zdjecia ORDER BY numer, numer_zdjecia(?) Nie sprecyzowałeś o jakiego SQLa chodzi, więc masz Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ProWeb2 Opublikowano 24 Października 2005 Udostępnij Opublikowano 24 Października 2005 SELECT t1.numer, t1.kat_id, t1.nazwa, t1.cena, t1.krotki_opis, t2.obraz FROM stor_produkty t1, stor_galeria t2 WHERE t1.numer = t2.produkt_id(+) AND t2.aktywne = 1 ORDER BY t2.obraz DESC Przetestuj i powiedz co zwraca. www.governo.it Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
topbi Opublikowano 24 Października 2005 Autor Udostępnij Opublikowano 24 Października 2005 SELECT t1.numer, t1.kat_id, t1.nazwa, t1.cena, t1.krotki_opis, t2.obraz FROM stor_produkty t1, stor_galeria t2 WHERE t1.numer = t2.produkt_id(+) AND t2.aktywne = 1 ORDER BY t2.obraz DESC Przetestuj i powiedz co zwraca. 95747[/snapback] W wyniku dostaje kilka lini na każdy produkt (tyle ile jest obrazków) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
topbi Opublikowano 24 Października 2005 Autor Udostępnij Opublikowano 24 Października 2005 SELECT DISTINCT ON(numer) FROM ( SELECT t1.numer, t1.kat_id, t1.nazwa, t1.cena, t1.krotki_opis, t2.obraz FROM stor_produkty AS t1 INNER JOIN stor_galeria as t2 ON t1.numer=t2.produkt_id where aktywne=1 ) AS zdjecia ORDER BY numer, numer_zdjecia(?) Nie sprecyzowałeś o jakiego SQLa chodzi, więc masz 95672[/snapback] chyba to jest włąściwa droga tylko wymaga dopracowania, ale nie jestem pewien czy mySQL umie DISTINCT ON Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
.Grzesiek Opublikowano 24 Października 2005 Udostępnij Opublikowano 24 Października 2005 MySQL wielu rzeczy nie umie. Między innymi DISTINCT ON i podzapytania kiedyś sprawiły, że porzuciłem MySQL na rzecz PostgreSQL. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MMP Opublikowano 24 Października 2005 Udostępnij Opublikowano 24 Października 2005 W wyniku dostaje kilka lini na każdy produkt (tyle ile jest obrazków) I tak chyba powinno być bo jak masz gdzieś 5 wpisów pasujących(5 obrazków) i jeden produkt to będzie 5 rekordów. Inaczej odwróc sortowanie i daj LIMIT 1 stopka usunieta z wpoodu wirusa na stronie docelowej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Zarchiwizowany
Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.