OK, ich gebe Ihnen eine vollständige Antwort mit normalisierten Tabellen:
Sie können die table_2
normalisieren und die Spalte name
Tabelle table_1
einzufügen. Sehen Sie im folgenden und neuen Tabellenstruktur (mit table_1
und table_2
):
table_1
--------------------------------------------
id uid category balance name
1 1 A 100 ABC
2 2 B 80 XYZ
table_2
------------------------
id uid last_pay
1 1 10
2 1 10
3 1 10
4 2 80
diese Tabellen zu erstellen, können Sie das folgende Skript verwenden:
CREATE TABLE table_1 (
`id` INT,
`uid` INT,
`category` VARCHAR(1),
`balance` INT,
`name` VARCHAR(3)
);
INSERT INTO table_1 VALUES
(1, 1, 'A', 100, 'ABC'),
(2, 2, 'B', 80, 'XYZ');
CREATE TABLE table_2 (
`id` INT,
`uid` INT,
`last_pay` INT
);
INSERT INTO table_2 VALUES
(1, 1, 10),
(2, 1, 10),
(3, 1, 10),
(4, 2, 80);
Eine Abfrage Ihr erwartetes Ergebnis zu erhalten:
SELECT t1.uid, t1.category, t1.balance, t2.uid, t1.name
FROM table_1 t1
LEFT JOIN (
SELECT uid, SUM(last_pay) AS last_pay
FROM table_2
GROUP BY uid
) t2 ON t1.uid = t2.uid
WHERE (t1.balance - t2.last_pay) > 0
Sie können ein funktionierendes Beispiel finden Sie hier:http://sqlfiddle.com/#!9/a2e27/3/0
Sie möchten Ihre ursprünglichen Tabellen verwenden? [Antwort für die ursprüngliche Frage]
Wenn es möglich ist, empfehle ich, die Tabellen zu normalisieren! Wenn es nicht möglich ist, die Tabellenstruktur zu ändern, können Sie die folgende Abfrage verwenden, um Ihr erwartetes Ergebnis:
SELECT t1.uid, t1.category, t1.balance, t2.uid, t2.name
FROM table_1 AS t1 LEFT JOIN table_2 AS t2 ON t1.uid = t2.uid
LEFT JOIN (
SELECT uid, SUM(last_pay) AS last_pay
FROM table_3
GROUP BY uid
) t3 ON t1.uid = t3.uid
WHERE (t1.balance - t3.last_pay) > 0
Sie ein funktionierendes Beispiel finden Sie hier:http://sqlfiddle.com/#!9/f22024/7/0
Ihre Frage ist unklar. Balance scheint in der ersten Tabelle zu sein, nicht in der zweiten.Wenn Sie eine Summe berechnen möchten, müssen Sie höchstwahrscheinlich mit 'GROUP BY' aggregieren. Können Sie Ihre Frage aufräumen und Ihre erwartete Ausgabe zeigen? –
@TimBiegeleisen Ich habe die Konditionen aktualisiert. Bitte schauen Sie jetzt – pkdq
Sie haben noch 2 'table_2' Auch Ihre Daten scheinen nicht normalisiert zu sein. –