Antworten auf deine Fragen:
Neues Thema erstellen

mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

kevin_web_web

Noch nicht viel geschrieben

Hallo,

angenommen man hat eine mysql-select abfrage mit mehreren alternativen Bedingungen, zb:

PHP:
(SELECT a FROM t1 WHERE a=10 OR b=1 OR c=5)

Hier wird ja normalerweise die ausgabe nach dem Feld sortiert, welches bei "ORDER BY" angegeben ist. Ist es vieleicht möglich, die Ausgabe so zu sortieren, das zuerst die Treffer von der ersten Bedingung, dann nach einem kurzen Text bzw Überschrift dazwischen die Treffer der zweiten, dann die Treffer der dritten, usw ausgegeben werden?

Gruß, Kevin
 

H

herby1973

Guest

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

Hi,

warum holst du nicht erstmal alle Einträge mit einer mySQL Anweisung und filterst die dann mit PHP?

Also quasi so:

Code:
[COLOR=#000000][COLOR=#0000bb](SELECT a, b, c, 'a' AS  myfrom FROM tabelle1 WHERE a=10)
UNION ALL
(SELECT a, b, c, 'b' AS myfrom FROM tabelle1 WHERE b=1)
UNION ALL
(SELECT a, b, c, 'c' AS myfrom FROM tabelle1 WHERE c=5)[/COLOR][/COLOR]
Als Ergebnis gibt es dann zum Beispiel:


10 12 13 a
9 1 5 b
9 1 5 c

Durch die Spalte myfrom ist dann klar durch welche Anweisung der Aufruf erfolgte. Dann das Ergebnis mit PHP durchwandern.

Ich hoffe ich habe das richtig verstanden. Ansonsten vielleicht mal ein etwas ausführliches Beispiel wofür das gebraucht wird.
 

kevin_web_web

Noch nicht viel geschrieben

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

Hi,

mit union hatte ich auch schon überlegt. Aber in diesemFall sprechen ein paar Dinge dagegen, da ich hier einen bestehedes Script ergänze und die Änderungen an die vorhandene Umgebung anpassen muss. Also Felder kann bzw will ich hier nicht hinzufügen, vor allem aber sieht es so aus, als ob ich in diesem Fall wahrscheinlich nicht union verwenden kann. trotzdem ein guter Vorschlag, danke dir.

Gruß, Kevin
 

stylux

Pixelchemiker

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

Code:
SELECT `a` FROM `test`
 WHERE `a`='9' OR `b`='6' OR `c`='5'
 ORDER BY FIND_IN_SET('9', `a`) DESC, FIND_IN_SET('6', `b`) DESC, FIND_IN_SET('5', `c`) DESC
So klappt dat bei mir :)
 

kevin_web_web

Noch nicht viel geschrieben

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

hey stylux, das sieht aber stark interessant aus. Werde das gleich mal ausprobieren und dann Rückmeldung erstatten, ob es funktioniert hat ;)
Danke dir, Kevin
 

kevin_web_web

Noch nicht viel geschrieben

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

Hallo zusammen,

ich habe jetzt das ORDER BY von stylux gar nicht ausprobiert, aus dem einfachen Grund, weil die Treffer schon durch simples einfügen der OR-Bedingungen in das select so gelistet werden, wie ich wollte, also erst die Treffer der ersten Bedingung, dann der zweiten usw. Für mich einigermaßen überraschend, aber ist natürlich toll, das es läuft. ist das eigentlich normal bei mysql, das mit mehreren OR-Bedingungen so gelistet wird? mir war das so noch nie aufgefallen.

Andere Frage, wie könnte ich nun zwischen die einzelnen "absätze" eine Überschrift einfügen?

Gruß, Kevin
 

stylux

Pixelchemiker

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

Ich hab das mal grad probiert und wenn ich die Reihenfolge der "OR" ändere, dann ändert sich die Ausgabereihefolge mit nichten.
 

kevin_web_web

Noch nicht viel geschrieben

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

ja, ich muss mich da leider korrigieren. es hat nicht funktioniert wie ich zunächst dachte. schade schade... ärgerlich auch sowas. wenn man schon dachte es funktioniert und dann nach ein paar stunden merkst du plötzlich, aargggh, tuts doch nicht!!!
 

kevin_web_web

Noch nicht viel geschrieben

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

Hallo stylux,

ich hab da nochmal eine Frage:

PHP:
SELECT `a` FROM `test`
 WHERE `a`='9' OR `b`='6' OR `c`='5'
 ORDER BY FIND_IN_SET('9', `a`) DESC, FIND_IN_SET('6', `b`) DESC, FIND_IN_SET('5', `c`) DESC

Hat das irgendeine Bedeutung, das du hier unterschiedliche Anführungszeichen verwendest?

Gruß, Kevin
 

stylux

Pixelchemiker

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

Das eine sind Strings und das andere Feld- oder Tabellennamen.
 

kevin_web_web

Noch nicht viel geschrieben

AW: mysql Select-Abfrage mit OR - Treffer nach Bedingung sortieren?!

so, ich habe jetzt anstatt das bestehende script zu erweitern, ein eigenständiges modul gebaut, mit dem von stylux geposteten ORDER BY (danke nochmal hierfür). Es funktioniert nun wirklich, das heißt ich bin jetzt mit der abfrage soweit, wie ich schon vorletzte Nacht zu sein glaubte, nun aber wirklich.
Die frage nach den Anführungszeichen hat sich demnach auch erledigt, ich habe die Feldnamen ohne und bei den Werten dann Variablen eingesetzt und entsprechend Anführungszeichen. Hier noch mal der Code:

PHP:
$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
               '*', 
               'table1',
               'feld1 ="'.$var1.'" AND uid !="'.$theuid.'" OR feld2 ="'.$var2.'" AND uid !="'.$theuid.'" OR feld3 = "'.$var3.'" AND uid !="'.$theuid.'"', 
               $groupBy='',
               $orderBy='FIND_IN_SET(feld1, "'.$var1.'") DESC, FIND_IN_SET(feld2, "'.$var2.'") DESC, FIND_IN_SET(feld3, "'.$var3.'") DESC',
               $limit='100'
               );

Schon mal sehr schön, ich freu mich das das jetzt schonmal läuft. Wie sieht es aus, mit Überschriften zwischen den einzelnen Blöcken, plus maximale anzahl von auszugebenden Treffern pro Bedingung, jemand ne Idee?

Gruß, Kevin
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben