Mam następujące tabele:
platnicy (kolumny id_platnicy, nazwa_platnicy)
users (kolumny id_users, id_platnicy, id_grupy, imie)
grupy (kolumny id_grupy, nazwa_grupy, id_platnicy)
Do usera może być bezpośrednio przypisany płatnik. Może on być też jednak przypisany do grupy do której user należy.
Potrzebuję wyciągnąć dane usera oraz id_platnicy i nazwa_platnicy płatnika do którego on lub jego grupa są przypisani.
Robię to tak:
SELECT users.imie,
CASE WHEN users.id_platnicy=0 THEN
CASE WHEN grupy.id_platnicy=0 THEN 0 ELSE grupy.id_platnicy END
ELSE
users.id_platnicy
END as **id_platnicy**,
(SELECT nazwa_platnicy FROM platnicy WHERE platnicy.id_platnicy=**id_platnicy**) as nazwa_platnicy
FROM users
LEFT JOIN grupy USING(id_grupy)
Jednak wyrzuca mi błąd "Subquery returns more than 1 row". Jeżeli zmienię nazwę "ogwiazdkowanych" kolumn na jakąś inną np. id_platnicy2 to działa, no ale wtedy zapytanie nie zwraca mi kolumny id_platnicy.