WHERE bei WHERE MATCH
Stefan
- datenbank
0 Vinzenz Mai0 Stefan0 Samoht0 Stefan
0 Frank (no reg)0 Stefan
Hallo,
ich habe nun schon einige Zeit gegooglet, konnte aber keine Antwort auf meine Frage finden. Ich bin derzeit dabei mir eine kleine Suchfunktion zu basteln und meine Abfrage sieht derzeit ungefaehr so aus:
SELECT column1, column2, column3
FROM table
WHERE MATCH (column2)
AGAINST ('$Suchbegriff')
LIMIT 0,5");
Das funktioniert auch alles wunderbar. Nun moechte ich allerdings meine Ausgabe noch weiter einschraenken. Das bedeuetet ich wuerde am liebsten noch eine weitere WHERE Klausel in die Abfrage einbringen. Ist das generell moeglich? Oder gibt es auch andere Wege sein Resultat weiter einzuschraenken? Ich wuerde mich auch ueber Antworten freuen, wenn jemand sagt und weiß, dass es absolut nicht moeglich ist, damit ich mir was anderes ueberlegen kann.
Vielen Danke schonmal im vorraus...
Hallo
meine Abfrage sieht derzeit ungefaehr so aus:
SELECT column1, column2, column3
FROM table
WHERE MATCH (column2)
AGAINST ('$Suchbegriff')
LIMIT 0,5");Nun moechte ich allerdings meine Ausgabe noch weiter einschraenken. Das bedeuetet ich wuerde am liebsten noch eine weitere WHERE Klausel in die Abfrage einbringen. Ist das generell moeglich?
Nein. [1]
Warum willst Du den AND-Operator nicht nutzen?
Freundliche Grüße
Vinzenz
[1] ein Subselect könnte natürlich eine eigene WHERE-Klausel haben.
Nein. [1]
Warum willst Du den AND-Operator nicht nutzen?
Ich habe verschiedene Möglichkeiten probiert die vorhandene WHERE Klause mit AND zu erweitern. Unter anderem hatte ich folgende Möglichkeiten. Bei allen folgenden Möglichkeiten hat MySQL einen Fehler ausgegeben:
Erster Versuch:
SELECT column1, column2, column3
FROM table
WHERE( (MATCH (column2)) AND (column3='1'))
AGAINST ('$Suchbegriff')
LIMIT 0,5");
Zweiter Versuch:
SELECT column1, column2, column3
FROM table
WHERE MATCH (column2)
WHERE column3='1'
AGAINST ('$Suchbegriff')
LIMIT 0,5");
gruß Stefan
allen folgenden Möglichkeiten hat MySQL einen Fehler ausgegeben:
verständlich...
Erster Versuch:
SELECT column1, column2, column3
FROM table
WHERE( (MATCH (column2)) AND (column3='1'))
AGAINST ('$Suchbegriff')
LIMIT 0,5");
»
_müsste_ (wenn ich jetzt keinen Fehler gemacht habe) so aussehen:
SELECT column1, column2, column3
FROM table
WHERE column3='1' AND (MATCH (column2) AGAINST ('$Suchbegriff'))
LIMIT 0,5";
Zweiter Versuch:
völlig falsch, da 2x WHERE
Gruß, Samoht
Hallo,
SELECT column1, column2, column3
FROM table
WHERE column3='1' AND (MATCH (column2) AGAINST ('$Suchbegriff'))
LIMIT 0,5";
OK, perfekt... das war es was ich gesucht habe. Vielen Dank, funktioniert jetzt alles wie es soll.
Hallo,
ich habe eine Tabelle (table) mit 3 Zeilen. In Zeile 1 & 2 steht bei column2 der indentische Inhalt. Ziel meiner MySQL-Abfrage ist es eine kleine Suchfunktion zu bauen. Meine Abfrage sieht so aus:
SELECT column1, column2, column3
FROM table
WHERE column3='1' AND (MATCH (column2) AGAINST ('$Suchbegriff'))
LIMIT 0,5";
Jetzt steht zum Beispiel in column2 in Zeile 1 Hallo und in Zeile 2 Wiedersehen. Wenn ich jetzt die oben gezeigte Funktion ausfuehre und $Suchbegriff mit Hallo austausche, zeigt er mir die Zeile an in der Hallo steht. Das ist soweit auch richtig und sol auch so sein.
Wenn ich jetzt eine dritte Zeile anlege und in column2 wiederum das Wort Hallo schreibe (also das 2 x Hallo in der gleichen Spalte steht) und anschließend wieder die Funktion aufrufe und den $Suchbegriff durch Hallo ersetze findet er keine Resultate mehr. Das heißt sobald ein Wert in einer Spalte doppelt vor kommt scheitert meine Suche, weil dann keine Resultate mehr ausgegeben werden.
Ich wuerde ich freuen, wenn mir auch bei diesem Problem jemand zur Seite stehen koennte. Ich habe schon alles moegliche Versucht. Auch das MySQL Tutorial konnte mir zu diesem Problem nicht helfen.
Vielen Dank schon mal im vorraus.
Wenn ich jetzt eine dritte Zeile anlege und in column2 wiederum das Wort Hallo schreibe (also das 2 x Hallo in der gleichen Spalte steht) und anschließend wieder die Funktion aufrufe und den $Suchbegriff durch Hallo ersetze findet er keine Resultate mehr. Das heißt sobald ein Wert in einer Spalte doppelt vor kommt scheitert meine Suche, weil dann keine Resultate mehr ausgegeben werden.
Aber column3 ist sicher '1' in Zeile 3?
Gruß, Samoht
Aber column3 ist sicher '1' in Zeile 3?
Ja, die ist sicher 1
War grad auf dem Schlauch gestanden, guck Dir bitte das Posting von Vinzenz an, bzw. das genaue Verhalten von MATCH AGAINST!
Gruß, Samoht
Hallo
Ziel meiner MySQL-Abfrage ist es eine kleine Suchfunktion zu bauen. Meine Abfrage sieht so aus:
SELECT column1, column2, column3
FROM table
WHERE column3='1' AND (MATCH (column2) AGAINST ('$Suchbegriff'))
LIMIT 0,5";
Wenn ich jetzt eine dritte Zeile anlege und in column2 wiederum das Wort Hallo schreibe (also das 2 x Hallo in der gleichen Spalte steht) und anschließend wieder die Funktion aufrufe und den $Suchbegriff durch Hallo ersetze findet er keine Resultate mehr.
Das ist das zu erwartende Verhalten, wie es auch im Handbuch dokumentiert ist.
Siehe dazu folgenden Archivthread und die darin enthaltenen Hinweise von ChrisB und mir.
Freundliche Grüße
Vinzenz
Das ist das zu erwartende Verhalten, wie es auch im Handbuch dokumentiert ist.
Siehe dazu folgenden Archivthread und die darin enthaltenen Hinweise von ChrisB und mir.
Ja, klar jetzt wo du es sagst fällt es mir wie Schuppen von den Augen. Ich hatte bei meinem ganzen komplizierten Denken an die 50% Marke nicht gedacht. Vielen Dank, jetzt funktioniert wirklich alles :)
gruß Stefan
Hi,
wie soll das denn aussehen mit der zweiten WHERE Klausel?
Mehrere Einschränkungen notiert man für gewöhnlich innerhalb EINER WHERE Klausel unter verwendung von logischen Operatoren wie AND, OR, NOT sowie geeigneter Klammersetzung, also à la
[code lang=sql]WHERE (bedingung1 OR bedingung2) AND bedingung3[code]
bedingungN wäre z.b. MATCH(column2) AGAINST ('Suchbegriff')
Grüsse,
Frank
- du möchtest von den 5 gefundenen die Menge noch weiter reduzieren/einschränken
Ja indirekt. Also meine Datenbank hat mehr als 5 Eintraege. Also gehen wir mal davon aus ich habe eine Datenbank mit 10 Eintraegen. Diese soll jetzt mit meiner Abfrage wie im ersten Post durchsucht werden. Die Suche soll allerdings durch weitere Kreterien eingeschraenkt werden. Er soll praktisch erst die Eintraege Filtern die gar nicht in Frage kommen (das wollte ich mit der WHERE Klausel machen) und anschließend soll er die noch übrige gebliebenen Eintraege durchsuchen.
- du möchtest die 5 gefundenen nach irgendwas sortieren
Nein!
- du möchtest z.b. auch noch column3 parallel mit einer einschränkung belegen
Ja, siehe Antwort auf erste Frage...
gruß Stefan