Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam
Borykam sie z pewnym problemem. Mam 2 tabele w ktorych jest:
to sa tylko dane testowe :P
mysql> select * from cds; +-------+-------+---------------------+------------+ | cd_id | owner | date | carrier_id | +-------+-------+---------------------+------------+ | 1 | 1 | 2008-02-09 02:01:31 | 1 | | 2 | 1 | 2008-02-09 02:01:31 | 1 | | 3 | 1 | 2008-02-09 02:01:31 | 2 | | 4 | 1 | 2008-02-10 15:25:32 | 2 | +-------+-------+---------------------+------------+ 4 rows in set (0.00 sec) mysql> select * from titles; +----------+---------+-------+------------------------+------+ | title_id | type_id | cd_id | title | size | +----------+---------+-------+------------------------+------+ | 1 | 1 | 1 | Quake 3 | NULL | | 2 | 1 | 2 | Sudden Strike 2 | NULL | | 3 | 7 | 3 | Gorace wargi sromowe 3 | NULL | | 4 | 7 | 3 | Seksolatki | NULL | | 5 | 1 | 4 | Cyberia | 200 | | 6 | NULL | 5 | Warcraft 3 | NULL | +----------+---------+-------+------------------------+------+ 6 rows in set (0.00 sec)
Miedzy tabela cds a titles zachodzi relacja 1 do n.
Probowalem robic podzapytania ale nie da rady bo krzyczy ze subquery ma wiecej niz jedna linia. co jest prawda w niektorych przypadkach.
Robie joina tory pokazuje:
select cds.cd_id, titles.title from cds left join titles on cds.cd_id = titles.cd_id; +-------+------------------------+ | cd_id | title | +-------+------------------------+ | 1 | Quake 3 | | 2 | Sudden Strike 2 | | 3 | Gorace wargi sromowe 3 | | 3 | Seksolatki | | 4 | Cyberia | +-------+------------------------+ 5 rows in set (0.00 sec)
czy da sie ten wynik jakos sformatowac w taki sposob ze jak pojawia sie wiersze z takimi samymi cd_id (tutaj akurat cd_id = 3) to zeby wylistowac cd_id na jednym wierszu a tytuly jakie sa polaczyc i oddzielic od siebie jakims separatorem.
jest cos takiego jak concat w mysqlu ale on laczy kolumny a mi chodzi o wiersze.
OK udalo mi sie cos znalezc na ten temat.
GROUP_CONCAT
mysql> select cd_id, group_concat(title separator '<br/>') as title from titles group by cd_id; +-------+---------------------------------------+ | cd_id | title | +-------+---------------------------------------+ | 1 | Quake 3 | | 2 | Sudden Strike 2 | | 3 | Gorace wargi sromowe 3<br/>Seksolatki | | 4 | Cyberia | | 5 | Warcraft 3 | +-------+---------------------------------------+ 5 rows in set (0.00 sec)
wszystko mozna znalezc na stronie http://dev.mysql.com/doc/refman/5.0/en/group-by-fun … _group-concat
Ostatnio edytowany przez ukasz (2008-02-15 02:58:01)
Offline
Strony: 1