mysql IF Else-Anweisung
Nicht sicher, wie weit eine sql-Abfrage mit if/else-Anweisungen.
Habe ich eine einfache SELECT-Anweisung:
WÄHLEN SIE
amount
,transtype
AUS
transactions
Den transtype
Spalte wird eine Zahl sein.
Zum Beispiel, 1 = Verkauf 2 = Rückerstattung, 3 = Fehler, 4 = storniert, 5 = etwas anderes.... und so weiter.
So, nichts kompliziertes. Aber die Liste neigt zu wachsen für reporting Gründen. Was in Ordnung ist.
Für eine bestimmte Abfrage, die ich arbeite, gibt es einen Weg zu extrahieren Sie diese Spalte als eine von 2 oder drei angegebenen zahlen oder text?
Zum Beispiel, einige transtype zahlen sind ein 'Verlust', während andere eine 'gain', und vielleicht auch anderen sind "neutral".
Ich würde gerne zu extrahieren, die Spalten mit nur die 3, ohne Verwendung von php im html-Tabelle werfe ich die Zeilen in die.
Wenn meine Erklärung ist nicht klar, ich entschuldige mich. Es war schwer zu ausspucken.
- Sie wollen zu kategorisieren transtype Werte als Verlust, Gewinn oder neutral?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die MySQL-FALL() - Funktion für eine Feste Anzahl von Argumenten. Wenn die Liste groß ist, sollten Sie eine zweite Tabelle, und fügen Sie Sie.
Beispiel:
Beitreten, gegen andere Tabelle enthält die Transaktions-Arten. So etwas wie:
Dann ändern Sie Ihre Abfrage, um die Verknüpfung:
Den
ELT
Funktion sollte den trick tun:Nicht sehr elegant aber, und logischerweise würde ich Sie hierzu in der view-Logik, nicht die Datenbank-Logik.
Sollten Sie wahrscheinlich verwenden
ENUM
- Typ für diese Spalte. Es ist auf 64 begrenzt, Werte, aber wenn Sie mehr brauchen dann sollten Sie eine neue Tabelle erstellen und dieJOIN
es in der Abfrage.