Topic: Užklausa iš trijų lentelių
Sveiki,
Turime mokėjimų sistemos DB, kurią sudaro 3 lentelės:
Klientai (kaupiama informacija apie klientus)
Sąskaitos (išrašomos sąskaitos kiekvieną mėnesį)
Mokėjimai (importuojami banko išrašai)
Reikia vienoje lentelėje atvaizduoti laukus:
Mokėtojo kodas, Vardas, Pavardė, Abonentinis mokestis, įmokos už praėjusį mėnesį SUMOJE, praeito mėnesio sąskaitos suma.
Darom užklausą:
$menesiukas=date("Y-m", strtotime("-1 month") );
$sql="SELECT klientai.mok_kod, klientai.vard , klientai.pav ,
klientai.ab_mok,SUM(mokejimai.suma) AS sumoketa, saskaitos.suma
FROM klientai
JOIN saskaitos ON klientai.mok_kod = saskaitos.mok_kod
JOIN mokejimai ON klientai.mok_kod = mokejimai.mok_kod
WHERE saskaitos.data LIKE '$menesiukas%'
GROUP BY klientai.mok_kod
ORDER BY klientai.mok_kod
";
Gražina visą teisingą informaciją išskyrus apmokėjimus už praėjusį mėnesį sumoje.
Tai yra tikriausiai todėl, kad nenurodytas įmokų mėnesis užklausoje, tačiau jeigu padarome taip:
$menesiukas=date("Y-m", strtotime("-1 month") );
$sql="SELECT klientai.mok_kod, klientai.vard , klientai.pav ,
klientai.ab_mok,SUM(mokejimai.suma) AS sumoketa, saskaitos.suma
FROM klientai
JOIN saskaitos ON klientai.mok_kod = saskaitos.mok_kod
JOIN mokejimai ON klientai.mok_kod = mokejimai.mok_kod
WHERE saskaitos.data LIKE '$menesiukas%'
AND mokejimai.data LIKE '$menesiukas%'
GROUP BY klientai.mok_kod
ORDER BY klientai.mok_kod
";
Negauname norimo rezultato.
Kaip pakoreguoti užklausą, kad šalia kitų laukų būtų gautą įmokų už praėjusį mėnesį su kiekvienu klientu.
Iš anksto dėkoju už pagalbą.