2012-04-27 23 views
6

Kiedy testuję zapytanie przy użyciu group_concat, działa poprawnie i wyświetla w wierszu właściwą listę rozdzielaną przecinkami. Jednak, gdy kliknę "Eksportuj" na dole zestawu wyników, pojawia się komunikat o błędzie: #1630 - FUNCTION <databasename>.group_concat does not exist.Błąd MySql GROUP_CONCAT podczas eksportu z phpmyadmin

Wygląda na to, że traktuję odwołanie do GROUP_CONCAT jako funkcję zdefiniowaną przez użytkownika. Czy istnieje sposób właściwego zakwalifikowania nazwy funkcji, aby mogła znaleźć ją podczas eksportowania? Nie miałem problemów z eksportowaniem, zanim nie spróbowałem użyć group_concat.

Oto zapytanie:

SELECT *, group_concat(distinct g.name) FROM `users` u 
left join usergroupassoc a on u.userid = a.userid 
left join usergroups g on a.usergroupid = g.usergroupid 
where u.enddate is null and g.enddate is null group by u.userid 
+0

Możesz pisać kwerendy? –

+4

Wydaje się być wrażliwy na odstępy między 'group_concat' i nawiasem otwierającym. Czy możesz sprawdzić, czy w zapytaniu, które właśnie uruchomiłeś, nie ma żadnych spacji? Źródło: http://www.dreamincode.net/forums/topic/247573-distinct/ – mellamokb

+0

Jest to możliwe - myślę, że phpmyadmin przekształca zapytanie przed przekazaniem go do MySql. Wygląda na to, że nie wydaje się miejsca przed nawiasem otwierającym, ale może robi coś innego, czego MySql nie lubi. – devios1

Odpowiedz

1

GROUP_CONCAT używa przecinka jako domyślny separator, który może uniemożliwiać phpmyadmin z generowania pliku eksportu poprawnie.

Spróbuj określając średnik jako separator GROUP_CONCAT:

SELECT *, group_concat(distinct g.name SEPARATOR ';') FROM `users` u 
left join usergroupassoc a on u.userid = a.userid 
left join usergroups g on a.usergroupid = g.usergroupid 
where u.enddate is null and g.enddate is null group by u.userid;