Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Wiele wartości w jednym rekordzie
Forum PHP.pl > Forum > Bazy danych > MySQL
parzol
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
heaven
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 ', '
test30
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
kitol
  1. INSERT INTO tabelaB SELECT GROUP_CONCAT(nazwa) FROM tabelaA


pisane z palca
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.