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')
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?

- 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')