Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


No to chyba zostaje zwrocenie wszystkich kombinacji bo nie ma takiej mozliwosci aby rekordy dolanczal do 1 rekordu.
Go to the top of the page
+Quote Post
easy
post
Post #3





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

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


Nie wierze, że się nie da tego zrobić, ale widać muszę spróbować rozwiązania z funkcją.
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


No chyba ze jakos przez CONCAT ale mysle ze w Twoim przypadku to odpada bo to sluzy do laczenia stringow.
Go to the top of the page
+Quote Post

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: 22.09.2025 - 21:30