ugrás a tartalomhoz

MySQL - Egy rekordban a kapcsolódó típus

Gáldi Ákos · 2006. Feb. 1. (Sze), 18.23
Adatbázis: MySQL 4.1.15

Van 3 táblám(latnivalok, latnivalo_tipusok, latnivalo_tipusok_kapocs). Az elsőben nevezetességek, látnivalók, a másodikban a hozzá kapcsolható látnivaló típusok(múzeum, nevezetesség, étterem, fürdő, stb...) a harmadikban a két tábla összekapcsolódó adatai vannak. Több-több kapcsolat van tehát.

A probléma a következő:

A Lekérdezésem:
SELECT latnivalok.nev, latnivalo_tipusok.nev
FROM latnivalok
LEFT JOIN latnivalo_tipusok_kapocs ON ( latnivalok.id = latnivalo_tipusok_kapocs.latnivaloid )
LEFT JOIN latnivalo_tipusok ON ( latnivalo_tipusok_kapocs.tipusid = latnivalo_tipusok.id )
Ez ilyen eredményhalmazt produkál:
+--------------+------------------+
| Latnivaló1   | múzeum           |
+---------------------------------+
| Latnivaló1   | nevezetesség     |
+---------------------------------+
| Latnivaló2   | étterem          |
+---------------------------------+
| Latnivaló2   | cukrászda        |
+---------------------------------+
| Latnivaló2   | nevezetesség     |
+---------------------------------+
| Latnivaló3   | fürdő            |
+---------------------------------+


Azt szeretném elérni, hogy
+--------------+----------------------------------+
| Latnivaló1   | múzeum, nevezetesség             |
+-------------------------------------------------+
| Latnivaló2   | étterem, cukrászda, nevezetesség |
+-------------------------------------------------+
| Latnivaló3   | fürdő                            |
+-------------------------------------------------+
eredményt produkáljon.

Ebben kérném a segítségeteket! Köszönöm!
 
1

<Nincs cím>

Anonymous · 2006. Feb. 1. (Sze), 18.34
Hat szvsz ezt mysql 4-ben nehezebb megcsinalni mint az 1. eredmenyt kiirni (gondolom phpval) a 2. modon.
2

Egyéb programozási nyelv nélkül

Gáldi Ákos · 2006. Feb. 1. (Sze), 18.39
A kérdésem kifejezetten SQL nyelven való megvalósításra irányult, ha esetleg félreérthető lettem volna.
3

group_concat

Táskai Zsolt · 2006. Feb. 1. (Sze), 19.12
nekem ez jut róla eszembe.
http://dev.mysql.com/doc/refman/4.1/en/group-by-functions.html#id2801002
asszem, 4.1-ben vezették be.
Tasi
4

Ez az!!!

Gáldi Ákos · 2006. Feb. 1. (Sze), 21.46
Nagyon köszönöm a linket! Az adott hivatkozáson található a megoldás. Örülök neki, hogy bevezették ezt a funkciót! :)

Így változott az SQL:
SELECT latnivalok.nev, 
GROUP_CONCAT( DISTINCT latnivalo_tipusok.nev
ORDER BY latnivalo_tipusok.nev ASC SEPARATOR ', ' )
FROM latnivalok
LEFT JOIN latnivalo_tipusok_kapocs ON (latnivalok.id = latnivalo_tipusok_kapocs.latnivaloid)
LEFT JOIN latnivalo_tipusok ON (latnivalo_tipusok_kapocs.tipusid = latnivalo_tipusok.id)
GROUP BY latnivalok.nev
Üdv,
Gáldi Ákos