Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Wiele wartości w jednym rekordzie
parzol
post 11.02.2008, 20:31:55
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 1
Dołączył: 7.05.2005

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


Witam.

Mam następujące tabele:

POKOJ:
id | name

POKOJ_ATRAKCJA:
id | pokoj_id | atrakcja_id

ATRAKCJA:
id | name

Są one wypełnione jakimiś danymi. Jak wyświetlić w MySQL listę atrakcji dla danego pokoju ale tak aby dla danego pokoju lista atrakcji byla wyświetlona w jednym rekordzie.
Przykładowo:

pokoj.name | atrakcje
=============================
Stokrotka | basen, parking, rower
Roza | basen
Gerber | parking, rower

Narazie potrafie zbudować jedynie:

pokoj.name | atrakcje
==================
Stokrotka | basen
Stokrotka | parking
Stokrotka | rower
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
heaven
post 11.02.2008, 21:57:57
Post #2





Grupa: Nieautoryzowani
Postów: 92
Pomógł: 15
Dołączył: 21.10.2006

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


Pisze z palca...
  1. SELECT p.name, GROUP_CONCAT(DISTINCT a.name ORDER BY a.name SEPARATOR ', ') AS 'atrakcje'
  2. FROM pokoj p
  3. JOIN pokoj_atrakcja pa ON (p.id=pa.pokoj_id)
  4. JOIN atrakcja a ON (pa.atrakcja_id = a.id)
  5. GROUP BY p.name

lub bez DISTINCT jesli maja sie powtarzac (o lie wogole moga sie powtarzac np. 2 roze w tym samycm pokoju) no i kolejnosc ustawiona jest alfabetycznie i odzielone atrakcje ', '
Go to the top of the page
+Quote Post
test30
post 15.02.2008, 18:00:17
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 15.12.2007

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


a jak wypelnic komorke tabeli B wszystkimi wartosciami kolumny nazwa polaczonymi jakims speratorem, np. ';' z tabeli A,

troche przykladow:
mam na przykald tabele A:
Kod
id|nazwa
  1|nazwa1
  2|nazwa2
  3|nazwa3


teraz tabele A przepuszczam przez zapytanie i w wyniku otrzymuje dodanie nowego rekordu do tabeli B, czyli tabela B zwieksza sie o rekord
Kod
[nastepnyid]|nazwa1;nazwa2;nazwa3
Go to the top of the page
+Quote Post
kitol
post 15.02.2008, 18:12:59
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


  1. INSERT INTO tabelaB SELECT GROUP_CONCAT(nazwa) FROM tabelaA


pisane z palca
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 21.06.2025 - 19:57