Autor Zpráva
scrand
Profil *
Zdravím

Řeším jeden problém s dotazem na DB. Zajímá mě, jestli je toto možné provést nějakým poddotazem, nebo se to musí dělat dalším dodatečným dotazováním. Myslím, že by to šlo udělat přes GROUP_CONCAT, ale nějak se mi nedaří

Mám tabulky

Movies (id, name)
1 Matrix
2 Matrix 2
3 Matrix 3


Countries (id, name)
1 CZ
2 SK
3 EN
4 DE


movies2countries (id, idmovie, idcountry)
1 1 1
2 2 2
3 1 2
4 3 3
5 2 4
6 2 3


A potřebuji z toho dostat výstup, kde budou vypsány všechny filmy a k nim země ve kterých se film natáčel

ID	FILM		Země
1	Matrix	  CZ, SK
2	Matrix 2	SK, DE, EN
3	Matrix 3	EN


Řešil jsem to takto, ale všechno mi to sloučí do jednoho řádku...
SELECT movies.id, movies.name, GROUP_CONCAT(DISTINCT countries.name WHERE movies.id = movies2countries.idmovie ORDER BY movies2countries.timestamp ASC SEPARATOR ', ') AS countries
FROM movies
LEFT JOIN movies2countries ON movies.id = movies2countries.idmovie
LEFT JOIN countries ON movies2countries.idcountry = countries.id
WHERE movies.name LIKE '%matrix%' LIMIT 20


Děkuji za odpověď.
Kajman_
Profil *
V group_concat nemá where co dělat. Dále by tam mělo být "group by movies.id, movies.name" (před limitem).
scrand
Profil *
Děkuji :) funguje perfektně! Ten where tam zůstal z těch pokusů co jsem zkoušel :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0