Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Niewytłumaczone zjawisko z ZAPYTANIEM ?
luckyluc
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.04.2006

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


Wykonałem mały system produktów. Dodaje produkt do tabeli "PRODUKTY", a następnie kiedy znam nr ID produktu dodaje zdjęcia do tabeli "ZDJECIA" podając znany juz nr ID produktu.


produkty

produkty_id | produkty_nazwa | produkty_opis | produkty_status | produkty_pozycja

1 | gruszka | zielona | 1 | 0
2 | banan | zolty | 1 | 0

zdjecia

zdjecia_id | zdjecia_plik | zdjecia_produkt

1 | sd323.jpg | 1
2 | fd334.jpg | 1
3 | gh42.jpg | 1
4 | ss11.jpg | 1
5 | df89.jpg | 2


Poniższe zapytanie miało wyświetlić produkt i pierwsze dodane zdjęcie z tabeli "zdjecia":

  1. $zapytanie = mysql_query("SELECT * FROM produkty LEFT JOIN zdjecia ON (zdjecia_produkt=produkty_id) WHERE produkty_status = \"1\" GROUP BY produkty_id ORDER BY produkty_pozycja DESC, produkty_nazwa ASC");


Na początku wszystko było OK. Wyświetlały się produkty i przy nich pierwsze dodane zdjęcia, ale gdy w bazie było już ponad 500 produktów przy niektórych produktach zaczęły pojawiać się inne niż pierwsze fotki. Porównywałem poszczególne rekordy i niczym się nie różnią! Nie mogę znaleźć reguły występowania tego błędu.

Co może być źle? Proszę o podpowiedź.

Ten post edytował luckyluc 8.02.2008, 13:37:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
heaven
post
Post #2





Grupa: Nieautoryzowani
Postów: 92
Pomógł: 15
Dołączył: 21.10.2006

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


ja bym to zrobil tak. U ciebie jest "GROUP BY produkty_id" ale mysql nie daje pewnosci w jakiej kolejnosci beda wiersze po zgrupowanu i czy pierwszy wystepujacy bedzie tym zgrupowanym i moim zdaniem stad sie bierze ten blad

  1. SELECT *
  2. FROM produkty LEFT JOIN (SELECT MIN(zdjecia_id) AS zdjecia_id,zdjecia_produkt
  3. FROM zdjecia GROUP BY zdjecia_produkt) AS min_id_zdjecia_przedmiotu ON (min_id_zdjecia_przedmiotu.zdjecia_produkt=produkty.produkty_id)
  4. LEFT JOIN zdjecia ON (min_id_zdjecia_przedmiotu.zdjecia_id = zdjecia.zdjecia_id)
  5. WHERE produkty_status = 1 ORDER BY produkty_pozycja DESC, produkty_nazwa ASC


zapytanie nie jest sprawdzone...
ale ... powinno dzialac jesli nie wkradla sie jakas literowka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pierwszy join dolacza do produktow id'eki minimalne zdjec dla poszczegolnych produktow a drugi dolacza do tych minimalnych reszte kolumn z tabeli zdjecia...

Ten post edytował heaven 10.02.2008, 18:23:53
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 21:36