2017-09-14 3 views
0

Hier ist mein Datenbankschema:Wie wird nur der erste übereinstimmende Wert aus einer anderen Tabelle in MySQL ausgewählt?

Zahlungs Tabelle:

+------------+--------+--------+---------------------+ 
| payment_id | tab_id | amount | created    | 
+------------+--------+--------+---------------------+ 
| 1   | 1  | 5  | 2017-05-22 12:14:27 | 
| 2   | 2  | 10 | 2017-05-22 12:15:21 | 
| 3   | 2  | 1  | 2017-05-22 13:11:14 | 
+------------+--------+--------+---------------------+ 

Tab Tabelle:

+------------+----------------+ 
| tab_id  | service_charge | 
+------------+----------------+ 
| 1   | 1    | 
| 2   | 3    | 
+------------+----------------+ 

I Gesamtmengen (amount + service_charge) pro Zahlung, aber service_charge soll berechnen müssen sein nur in der ersten Zahlung enthalten, die mit tab_id übereinstimmt.

Meine aktuelle Abfrage:

SELECT 
    payment.payment_id, 
    (payment.amount + tab.service_charge) as total_amount, 
    payment.created 
FROM payment 
    INNER JOIN tab 
    ON payment.tab_id = tab.tab_id; 

Tatsächliches Ergebnis:
Wie Sie unten service_charge von tab_id = 2 zweimal enthalten sehen (payment_id = 2 und payment_id = 3).

+------------+-----------------+---------------------+ 
| payment_id | total_amount | created    | 
+------------+-----------------+---------------------+ 
| 1   | 6    | 2017-05-22 12:14:27 | 
| 2   | 13    | 2017-05-22 12:15:21 | 
| 3   | 4    | 2017-05-22 13:11:14 | 
+------------+-----------------+---------------------+ 

Erwartetes Ergebnis:
total_amount sollte nicht service_charge in payment_id = 3 umfassen, wie unten gezeigt.

+------------+-----------------+---------------------+ 
| payment_id | total_amount | created    | 
+------------+-----------------+---------------------+ 
| 1   | 6    | 2017-05-22 12:14:27 | 
| 2   | 13    | 2017-05-22 12:15:21 | 
| 3   | 1    | 2017-05-22 13:11:14 | 
+------------+-----------------+---------------------+ 
+0

Siehe auch: [Warum sollte ich ein liefern MCVE für was scheint mir eine sehr einfache SQL-Abfrage?] (Https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to- Ich-habe-eine-sehr-einfache-SQL-Abfrage) – Strawberry

+0

@Strawberry Ich habe einen Blick darauf geworfen, aber es ist mir immer noch nicht klar, wie dieses Thema mir helfen kann, das Problem zu lösen, das ich habe. –

+0

Lesen Sie die angenommene Antwort (die 106 Mal aktualisiert wurde). Befolgen Sie die einfachen Anweisungen. Und schau, was passiert. – Strawberry

Antwort

1

Sie sollten bestimmen, welche die erste Zahlung ist an diesem info tab_id und dann basierend passende, entscheiden, ob Sie die service_charge oder nicht verwenden möchten:

+0

Danke. Einfach und elegant. –

Verwandte Themen