Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie - wg wartości pól z innej tabeli.
yacoos
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2005

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


Witam,
Mam dosyć skomplikowaną sytuację i nie mogę sobie poradzić ze skonstruowaniem zapytania.
Mam produkty i ich atrybuty oraz wartości tych atrybutów chodzi mi o posortowanie produktów względem kilku atrybutów w odpowiedniej kolejności.
Atrybuty rozwiązałem w te sposób, że mam tabelę atrybuty (w której są tylko ich nazwy), tabelę atrybuty_katalog (która łączy id grupy towarowej z id przypisanego do niego atrybutu) oraz tabelę atrybuty_wartosci (w której łączę id produktu, id atrybutu oraz mam w końcu wartość wartość).

Teraz chodzi mi o zapytanie, które wybierze wszystko z tabeli produkty majace id kategorii równe X (i to jest oczywiste) ale problem właśnie w posrtowaniu.. posortowane odpowiednio wg wartości atrybutu o id=7, następnie atrybutu o id=1 itd...

Mam nadzieję, że w miarę jasno udało mi się opisać sytuacje, w razie wątpliwości chętnie je rozwieje.
Proszę o jakieś wskazówki mogące pomóc rozwiązać ten problem.

Pozdrawiam,
yacoos
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sh4dow
post
Post #2





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


jest to proste do zrobienia ale nie do konca proste dla bazy do przeliczenia przy duzych ilosciach rekordow
  1. SELECT *
  2. FROM produkt AS p
  3. JEFT JOIN artybuty AS a1 ON (a1.produkt_id = p.id AND a1.id = 7)
  4. JEFT JOIN artybuty AS a2 ON (a2.produkt_id = p.id AND a2.id = 1)
  5. WHERE p.kategori_id = X
  6. ORDER BY a1.wartosc DESC, a2.wartosc DESC

Sadze ze cos takiego powinno zadziałacwiecej atrybutow to kolejne joiny. Oczywiscie mozna zrobic to bez joinow

  1. SELECT *
  2. FROM produkt AS p, artybuty AS a1, artybuty AS a2
  3. WHERE p.kategori_id = X AND a1.produkt_id = p.id AND a1.id = 7 AND a2.produkt_id = p.id AND a2.id = 1
  4. ORDER BY a1.wartosc DESC, a2.wartosc DESC

ale to zapytanie bedzie zachowywac sie zupelnie inaczej

Potestuj moze bedzie działać. Nazwy tablic musisz sobie sam odpowiednio ponazywac i do selecta takze odpowiednio dobrac kolumny

Ten post edytował Sh4dow 4.12.2006, 10:49:44
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: 7.10.2025 - 00:10