Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Składanie rekordu z kilku tabel
easy
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Lublin

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


Witam,

Mam 4 tabelki:
  1. -----------
  2. attributes
  3. -----------
  4. id
  5. name
  6. -----------
  7. attribute_values
  8. -----------
  9. id
  10. value
  11. -----------
  12. items
  13. -----------
  14. id
  15. name
  16. itd..
  17. -----------
  18. items_attributes
  19. -----------
  20. item_id
  21. attribute_id
  22. attribute_value_id

Stosując zwykle zapytanie wybieramy wszystkie cechy i ich wartości w formie x rekordów gdzie x to ilości cech (atrybutów).
  1. SELECT i.*, a.name, av.value FROM items i,
  2. attribute_values av,
  3. attributes a,
  4. items_attributes ia
  5. WHERE i.id = 666 AND a.id = ia.attribute_id AND av.id = ia.attribute_value_id AND ia.item_id = i.id

Jednak chciałbym uzyskać item wraz ze wszystkimi cechami / wartościami cech w formie jednego rekordu? A jeśli była by możliwość uzyskania nazw kolumn zgodnie z attribute.name to juz był bym w 7 niebie.

Dla jednej cechy można by zrobić to tak:
  1. SELECT i.*, attribute_values.value AS Producent
  2. FROM items i,
  3. items_attributes ia
  4. LEFT JOIN attributes
  5. ON ia.attribute_id = attributes.id AND (attributes.id = 1)
  6. LEFT JOIN attribute_values
  7. ON ia.attribute_value_id = attribute_values.id
  8. WHERE i.id = ia.item_id AND ia.item_id = 666 AND (attributes.name) IS NOT NULL

Jednak nie mam pomysłu (poza jednym, używając funkcji która by konstruowała zapytanie na podstawie podanego item.id) jak to rozwiązać dla dowolnej ilości cech?

Ten post edytował easy 30.08.2006, 13:22:12
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: 22.08.2025 - 02:38