SQL MySQL query - Suche aus Ergebniss rausfiltern

ChilliSchotte

Lt. Junior Grade
Registriert
Juni 2017
Beiträge
300
Moin,

bin leider ein wenig aus der Übung.
Mir ist klar, dass das was ich vorhabe sich auch über den code lösen lässt, aber ich dachte mir vielleicht gibt es eine smarte Lösung in der Datenbank-Abfrage auf die ich gerade nicht komme.

Ich habe eine Helper-table mit zwei Spalten A und B, ich möchte nun nach einem Wert in der Tabelle suchen, der sowohl in Spalte A als auch in Spalte B vorkommen kann. Als Ergebnis möchte ich allerdings nur die entsprechende andere Spalte haben.
Mal ein Beispiel, ich suche nach der 4:

AB
14
23
47
194
117

Wenn ich nun eine Abfrage starte mit SELECT A,B WHERE A = 4 OR B = 4 wäre das Ergebniss dann 1,4,4,7,19,4.
Wenn ich allerdings nur die entsprechende andere Spalte bekommen würde 1,7,19.
Lässt sich sowas bereits über die Query abbilden oder muss ich später codeseitig das Gesuchte aus dem Array werfen??

Vielen Dank!
 
  • Gefällt mir
Reaktionen: RalphS
Vielen Dank, wieder was gelernt! :)
 
Der Ansatz ist elegant, setzt aber voraus, daß der Matchup egal ist. In dem Fall müßte man die Abfrage um eine skalare Spalte erweitern:
SQL:
SELECT 'Match in A' found_in, col_B matched_value where col_A = 4
UNION ALL
SELECT 'Match in B', col_A where col_B = 4;

NB - da mit UNION jegliche Information über die ursprünglichen Spalten verlorengeht (gehen kann) ist es sinnvoll, außer dem Daten selbst auch noch die Spaltennamen semantisch zu "aggregieren" um Verwechslungen vorzubeugen; ohne Alias wäre der Spaltennamen immer col_B, insbesondere auch für diejenigen Fälle, wo es dort gar keinen Match gab (zweiter oder späterer UNION Teil).
 
  • Gefällt mir
Reaktionen: Murray B. und Hancock
Zurück
Oben