Cytat(SongoQ @ 2005-07-20 21:10:05)
@Jabol Nie wiem co sie kryje pod tym "g" ale wydaje mi sie ze jak by cos LEFT JOIN nieprawidlowo dzialal to by generowal za kazdym razem inne rekordy, jesli wyniki sa dokladnie takie same w 2 bazach danych to wydaje mi sie ze to wina jest zapytania.
@SongoQAleż left join działa znakomicie. Dokładnie tak jak trzeba. Po prostu służy do innych zastosowań, a w tym konkretnym przypadku generuje wiele "g.", czyli niepotrzebnych w tym zastosowaniu rekordów. Bo on nie robi tego "całościowo". On tutaj kleji każdy rekord oddzielnie i nie patrzy, czy już z niego korzystał.
@beeper: popróbuj z widokami (tutaj schowane)
Kod
SELECT win.id, kw1.kw, kw2.kw, kw3.kw
FROM win
LEFT JOIN (SELECT id, sum(kwota1) AS kw FROM kwota1 GROUP BY id) AS kw1 ON (win.id=kw1.id)
LEFT JOIN (SELECT id, sum(kwota2) AS kw FROM kwota2 GROUP BY id) AS kw2 ON (win.id=kw2.id)
LEFT JOIN (SELECT id, sum(kwota3) AS kw FROM kwota3 GROUP BY id) AS kw3 ON (win.id=kw3.id);
Czy jak to się tam nazywa - podzapytania. Ale możesz te podzapytania wyprowadzić do widoków i będzie ok (podzapytania w ten sposób działają na pgsql'u, ale ze to na mysql'u pójdzie nie ręcze, a widoki chyba nawet mysql ma).
Acha, nazwy tabel to sobie wymyśliłem jak przenosiłem strukturę na lokala. win to windykacja, kwota1 to kosztywf, kwota2 to kosztyww a kwota3 to wpłaty (czy jakkolwiek w dowolnej kolejości).
XXX: DAŁEM CODE, bo SQL nie działa (wywala mi jakieś fragmenty html'a);