2016-05-12 6 views
0

Nun, dieser Titel mag verwirrend sein, also lassen Sie mich versuchen, mein Problem zu erklären, indem ich einige Tabellen und Abfragen zeige. Ich habe eine Tabelle ‚_commision‘, die die folgenden Zeilen zu sehen ua:MySQL: Auswählen von Min- und Max-Werten aus verschiedenen Zeilen in Abhängigkeit von zwei verschiedenen ENUM-Werten

+-------+-------------+------+----------------+----------------+-----------+ 
| id | relation_id | type | min_commission | max_commission | percental | 
+-------+-------------+------+----------------+----------------+-----------+ 
| 22892 |  3427 | SALE |   1.40 |   1.80 | yes  | 
| 22891 |  3427 | SALE |   30.00 |   60.00 | no  | 
| 21075 |  6365 | LEAD |   30.00 |   NULL | no  | 
| 19638 |  4436 | SALE |   1.10 |   NULL | yes  | 
| 19637 |  4436 | LEAD |   30.00 |   NULL | no  | 
+-------+-------------+------+----------------+----------------+-----------+ 
5 rows in set (0.00 sec) 

ich den absoluten min_commission Wert und den absoluten max_commission Wert erhalten müssen. Der schwierigste Teil ist die prozentuale Spalte, wie Sie später sehen werden. Meine erste Idee war, so zu gehen:

SELECT rc.type, rc.currency_id, rc.percental, 
    MIN(rc.min_commission) AS min_commission, 
    IF(MAX(GREATEST(rc.min_commission, rc.max_commission)) > MIN(rc.min_commission) , MAX(GREATEST(rc.min_commission, rc.max_commission)) , 0.00) AS max_commission 
FROM _commission rc 
LEFT JOIN ... 
GROUP BY rc.type; 

Diese Abfrage die folgenden Zeilen ergibt:

+------+-------------+-----------+----------------+----------------+ 
| type | currency_id | percental | min_commission | max_commission | 
+------+-------------+-----------+----------------+----------------+ 
| LEAD |   1 | no  |   30.00 |   0.00 | 
| SALE |   1 | no  |   1.10 |   60.00 | 
+------+-------------+-----------+----------------+----------------+ 
2 rows in set (0.00 sec) 

Ich brauche aber ein Ergebnis zu erhalten, dass die Spalte ‚Prozentuale‘, weil, wenn die Art der Auffassung, Ist 'SALE', kann die Provision beispielsweise 1,4% und 30 $ betragen (prozentual oder fix). Wie Sie sehen können, brauche ich ein Ergebnis wie das folgende, aber ich kann keine passende Abfrage erhalten. So sollte das Ergebnis aussehen:

+------+-------------+-----------+----------------+----------------+ 
| type | currency_id | percental | min_commission | max_commission | 
+------+-------------+-----------+----------------+----------------+ 
| LEAD |   1 | no  |   30.00 |   0.00 | 
| SALE |   1 | yes  |   1.10 |   1.80 | 
| SALE |   1 | no  |   30.00 |   60.00 | 
+------+-------------+-----------+----------------+----------------+ 

Irgendwelche Ideen?

Antwort

1

die Sie interessieren,

SELECT 
      rc.type, rc.currency_id, rc.percental, 
      MIN(rc.min_commission) AS min_commission, 
      IF(MAX(GREATEST(rc.min_commission, rc.max_commission)) 
      > 
      MIN(rc.min_commission) , MAX(GREATEST(rc.min_commission, rc.max_commission)) , 0.00) AS max_commission 
    FROM 
      _commission rc 
    LEFT JOIN ... 
    GROUP BY 
      rc.type, rc.percental; 
+0

Ufff .... hahaha! Schande über mich: D Ich konnte das Holz für die Bäume nicht sehen. Brauche Schlaf - oder Kaffee. Danke Hytool! hahaha.... – Dong3000