Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Łączenie danych z kilku tabel
Forum PHP.pl > Forum > Przedszkole
kaster
[php][/php]Witam,
Potrzebuję pomocy w zakresie napisania zapytania do bazy MySQL aby otrzymać konkretny wynik

Posiadam 2 tabele z jednym wspólnym elementem ID_KLIENTA

tabela_1 (LP, ID_KLIENTA, IMIĘ, NAZWISKO)
+--------+-----------------+-----------+----------------+
| LP | ID_KLIENTA | IMIĘ | NAZWISKO |
+--------+-----------------+-----------+----------------+
| 1 | 1 | Jan | Kowalski |
+--------+-----------------+-----------+----------------+
| 2 | 2 | Barbara | Kulig |
+--------+-----------------+-----------+----------------+
| 3 | 3 | Grzegorz | Krawczyk |
+--------+-----------------+-----------+----------------+

tabela_2 (LP, ID_KLIENTA, NALEŻNOŚĆ, WPŁATA)

+--------+-----------------+---------------+-----------+
| LP | ID_KLIENTA | NALEŻNOŚĆ | WPŁATA |
+--------+-----------------+---------------+-----------+
| 1 | 1 | 100 | |
+--------+-----------------+---------------+-----------+
| 2 | 2 | 100 | |
+--------+-----------------+---------------+-----------+
| 3 | 3 | 100 | |
+--------+-----------------+---------------+-----------+
| 4 | 1 | | 100 |
+--------+-----------------+---------------+-----------+
| 5 | 2 | | 50 |
+--------+-----------------+---------------+-----------+

Potrzebuję otrzymać tabelę wynikową w postaci

ID_KLIENTA, IMIĘ, NAZWISKO, SALDO
+--------------+------------+--------------+----------+
| ID_KLIENTA | IMIĘ | NAZWISKO | SALDO |
+--------------+------------+--------------+----------+
| 1 | Jan | Kowalski | 0 |
+--------------+------------+--------------+----------+
| 2 | Barbara | Kulig | 50 |
+--------------+------------+--------------+----------+
| 3 | Grzegorz | Krawczyk | 100 |
+--------------+------------+--------------+----------+

dzięki za pomoc
trueblue
A potrafisz łączyć tabele i grupować dane?
Jeśli tak, to saldo będzie wyrażeniem: SUM(naleznosc+wplata) lub SUM(naleznosc)+SUM(wplata)
kaster
Łączyć tabel niestety nie potrafię

Wynik z tabeli 2 wykonałem metodą
SELECT SUM(WPŁATY) - SUM(ZOBOWIĄZANIA) AS saldo FROM tabela_2 GROUP BY ID_KLIENTA
trueblue
Jesteś całkiem blisko.
Tu jest przykład łączenia i grupowania dwóch tabel, przy czym zamiast SUM jest użycie COUNT: https://stackoverflow.com/a/45943897
Grupujesz po id_klienta.
kaster
Dziękuję za pomoc

SELECT tb1.ID_KLIENTA as id, tb1.IMIĘ as IMIĘ, tb1.NAZWISKO as NAZWISKO, SUM(tb2.WPŁATA) - SUM(tb2.NALEŻNOŚĆ) AS saldo FROM tabela_1 tb1 LEFT JOIN tabela_2 tb2 ON tb2.ID_KLIENTA = tb1.ID_KLIENTA GROUP BY ID_KLIENTA

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.