Mam 3 tabelki w bazie danych - ksiazki (dużo pól, indeks `id`), autorzy(`imie1`, `imie2`, `nazwisko`, `id`) i tabelę z powiązaniami książka <-> autor (`id`, `ksiazkaId`, `autorId`). Utworzyłem zapytanie, które pobiera tabelę z książkami i dodaje do niej pole "autorzy", które zawiera wypisanych po przecinku autorów.
SELECT k.*, (SELECT group_concat((REPLACE(CONCAT(a.imie1, ' ', a.imie2, ' ', a.nazwisko), ' ', ' ')) SEPARATOR ', ' ) FROM autorzy a, linkksiazkaautor ka WHERE a.id = ka.autorId AND k.id = ka.ksiazkaId) AS `autorzy` FROM ksiazki k
To zapytanie działa poprawnie, sprawdzałem w phpMyAdmin. Problem polega na tym, że muszę to zapytanie utworzyć w postaci obiektu Zend_Db_Select, potrzebne mi to do dalszego przetwarzania przez Zend_Paginator. I tu pojawiają się schody. Próbowałem przykładowo:
$select = $ksiazki ->select() ->from(array('k'=>'ksiazki', array('id'=>'k.id', 'tytul'=>'k.tytul', 'opis'=>'k.opis', 'liczbaStron'=>'k.liczbaStron', 'rokWydania'=>'k.rokWydania', 'autorzy'=>"(SELECT group_concat((REPLACE(CONCAT(a.imie1, ' ', a.imie2, ' ', a.nazwisko), ' ', ' ')) SEPARATOR ', ' ) FROM autorzy a, linkksiazkaautor ka WHERE a.id = ka.autorId AND k.id = ka.ksiazkaId)")));
I niestety zwraca zwykłą tabelę z książkami bez żadnych dowiązań.
Bardzo proszę o pomoc!
//EDIT: Problem rozwiązany. Źle nawiasy umieściłem w zapytaniu.