Select Ausgabe von zwei Textfeldern, aber jeweils nur eines ausgeben
Alejandro
- mysql
Ich habe gesehen hier gibt es ausser html auch viele mysql Fragen. Ich habe auch eine, vielleicht kann sie jemand helfen zu lösen.
SELECT id,namen1,namen2 FROM adress WHERE namen1 = 10 OR namen2 = 10
als Ausgabe bekomme ich dann
1!10!12
2!10!13
3!10!14
4!15!10
5!16!10
5!17!10
5!18!10
mich interessieren aber nur die Ergbenisse in dem zweiten Namensfeld, in dem nicht die 10 ist.
Diese möchte ich mir ausgeben lassen.
1!12
2!13
3!14
4!15
5!16
5!17
5!18
Aber mir fällt keine Lösung dazu ein.
Tach!
mich interessieren aber nur die Ergbenisse in dem zweiten Namensfeld, in dem nicht die 10 ist.
Die Query ist bereits soweit richtig, dass sie genau die gewünschten Datensätze ergiebt, und das Problem ist nur noch, welche Daten davon angezeigt werden sollen? Dann hilft die IF()-Funktion, um Entscheidungen zu treffen.
dedlfix.
Hallo dedlfix,
ich finde UNION besser als IF. Das ist klarer und voll allem indexierbar. Ein OR im WHERE führt oft dazu, dass ein Index nicht benutzt wird (zumindest habe ich das vor vielen Jahren mal so gelernt).
SELECT id,namen1 as namen
FROM adress
WHERE namen2 = 10
UNION
SELECT id,namen2 as namen
FROM adress
WHERE namen1 = 10
ORDER BY id, namen
Edit: Korrigiert nach Hinweis von Tom
Der ORDER BY am Ende sorgt dafür, dass das Ergebnis nach ID sortiert ist. Ansonsten hättest Du zuerst alle Sätze mit namen1=10 und danach alle Sätze mit namen2=10.
Rolf
Hello,
ich finde UNION besser als IF.
Müsste es nicht trotzdem
SELECT id,namen1 as namen
FROM adress
WHERE namen2 = 10
UNION
SELECT id,namen2 as namen
FROM adress
WHERE namen1 = 10
ORDER BY id, namen
heißen, um die Anforderung des OP zu erfüllen?
Glück Auf
Tom vom Berg
#Hust
Räusper. Hm. Weißgarnichtwasdumeinst
Danke.