Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Samozłaczenie tabel - czy dobrze zrobione
neotec
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 12.04.2008

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


Mam przykładową tabelę z cechami produktu:

ID | klucz | wartosc
nokia-6300 | Radio | Tak
....


Korzystam z poniższego samo złączenia aby wyjąć określone cechy i zbudować z nich kolumny:

Kod
SELECT
c1.ID, c1.wartosc as Bluetooth, c2.wartosc as Aparat, c3.wartosc as MP3, c4.wartosc as Radio
FROM cechy as c1
LEFT JOIN cechy as c2 ON c1.ID = c2.ID AND c2.klucz = 'Aparat fotograficzny'<BR>LEFT JOIN cechy as c3 ON c1.ID = c3.ID AND c3.klucz = 'Odtwarzacz mp3'
LEFT JOIN cechy as c4 ON c1.ID = c4.ID AND c4.klucz = 'Radio'

WHERE <BR>c1.klucz = 'Bluetooth' and<BR>c1.ID in ('nokia-6300', 'motorola-v3')



Dwa pytania:
- gdzie powinien znaleźć się warunek dotyczący pierwszej cechy c1.klucz
w części ON czy w WHERE?
- a może wszystkie c1.klucz, c2.klucz... powinny być w WHERE?questionmark.gif
- jak to zoptymalizować? bo dla 10 cech skutecznie to całkowicie zamula
mojego starego koma?

SELECT
c1.ID, c1.wartosc as Bluetooth, c2.wartosc as Aparat, c3.wartosc as MP3, c4.wartosc as Radio
FROM
cechy as c1
LEFT JOIN cechy as c2 ON c1.ID = c2.ID AND c2.klucz = 'Aparat fotograficzny'
LEFT JOIN cechy as c3 ON c1.ID = c3.ID AND c3.klucz = 'Odtwarzacz mp3'
LEFT JOIN cechy as c4 ON c1.ID = c4.ID AND c4.klucz = 'Radio'
WHERE
c1.klucz = 'Bluetooth' and
c1.ID in ('nokia-6300', 'motorola-v3')
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 Aktualny czas: 21.08.2025 - 19:05