Autor |
Nachricht |
kugelfischi
Threadersteller
Dabei seit: 17.10.2006
Ort: datenstrom west
Alter: -
Geschlecht:
|
Verfasst Di 28.08.2007 09:45
Titel [mysql] Suchfunktion mit LIKE |
|
|
Hallo!
Ich habe da mal folgende Frage:
Mittels SQL-Anweisung versuche ich den Inhalt einer Tabelle
gefiltert mit Suchwörtern auszugeben.
So sieht meine SQL-Anweisung zur Zeit aus:
SELECT * FROM Kontaktdaten WHERE (Vorname LIKE '%text1%' OR Nachname LIKE '%text1%') AND (Vorname LIKE '%text2%' OR Nachname LIKE '%text2%')
Sprich es soll folgendes passieren:
Das Suchwort "text1" soll gefunden werden, und das Suchwort "text2" soll gefunden werden, und zwar im gleichen Datensatz. Es gibt auch definitiv einen Datensatz, wo beide Wörter in
den entsprechenden Feldern vorhanden sind, und somit die Ausgabe true sein sollte - da ja beide Bedingungen erfüllt worden sind. Nur leider klappt das nicht?
Wenn ich anstatt des AND ein OR setze liefert er mir den Datensatz, aber auch alle anderen Datensaätze die mindestens eins von den Suchwörtern beinhaltet. Das möchte ich aber nicht.
Es soll so sein, dass wenn man mehr Wörter eingibt, dann soll sich das Ergebnis reduzieren.
Hat da vielleicht jemand einen Tipp? Ich wäre sehr dankbar dafür.
Gruß!
|
|
|
|
|
sxs_de
Dabei seit: 06.08.2007
Ort: Dettenheim
Alter: -
Geschlecht:
|
Verfasst Di 28.08.2007 12:50
Titel Re: [mysql] Suchfunktion mit LIKE |
|
|
kugelfischi hat geschrieben: | Hallo!
Ich habe da mal folgende Frage:
Mittels SQL-Anweisung versuche ich den Inhalt einer Tabelle
gefiltert mit Suchwörtern auszugeben.
So sieht meine SQL-Anweisung zur Zeit aus:
SELECT * FROM Kontaktdaten WHERE (Vorname LIKE '%text1%' OR Nachname LIKE '%text1%') AND (Vorname LIKE '%text2%' OR Nachname LIKE '%text2%')
Sprich es soll folgendes passieren:
Das Suchwort "text1" soll gefunden werden, und das Suchwort "text2" soll gefunden werden, und zwar im gleichen Datensatz. Es gibt auch definitiv einen Datensatz, wo beide Wörter in
den entsprechenden Feldern vorhanden sind, und somit die Ausgabe true sein sollte - da ja beide Bedingungen erfüllt worden sind. Nur leider klappt das nicht?
Wenn ich anstatt des AND ein OR setze liefert er mir den Datensatz, aber auch alle anderen Datensaätze die mindestens eins von den Suchwörtern beinhaltet. Das möchte ich aber nicht.
Es soll so sein, dass wenn man mehr Wörter eingibt, dann soll sich das Ergebnis reduzieren.
Hat da vielleicht jemand einen Tipp? Ich wäre sehr dankbar dafür.
Gruß! |
hallo,
SELECT * ist sowieso erstmal schwachsinnig man nimmt immer nur das was man braucht....!
darüberhinaus würde ich einfach lesen was du schreibst (übersetz es dir...).
|
|
|
|
|
Anzeige
|
|
|
kugelfischi
Threadersteller
Dabei seit: 17.10.2006
Ort: datenstrom west
Alter: -
Geschlecht:
|
Verfasst Di 28.08.2007 12:57
Titel Re: [mysql] Suchfunktion mit LIKE |
|
|
sxs_de hat geschrieben: |
SELECT * ist sowieso erstmal schwachsinnig man nimmt immer nur das was man braucht....!
|
Ja , ne ist klar. Meine Tabelle enthält nunmal mehrer Spalten, welche ich dann komplett Ausgeben will.
Also warum soll ich alle Spaltennamen nennen, wenn ich ALLE brauche und SELECT * dieses wunderbar vereinfacht????
sxs_de hat geschrieben: |
darüberhinaus würde ich einfach lesen was du schreibst (übersetz es dir...). |
Und das soll mir jetzt wie wieterhelfen? Hast DU überhaupt verstanden um was es geht?
Vielen Dank für nichts!
Gruß!
PS: Ich hoffe auf qualifiziertere Antworten. Bitte! Danke!
|
|
|
|
|
Pixelpole
Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht:
|
Verfasst Di 28.08.2007 13:08
Titel
|
|
|
Zitat: |
SELECT * FROM Kontaktdaten WHERE ((Vorname LIKE '%text1%' OR Nachname LIKE '%text1%') AND (Vorname LIKE '%text2%' OR Nachname LIKE '%text2%')) OR ((Vorname LIKE '%text1%' AND Nachname LIKE '%text2%') OR (Vorname LIKE '%text2%' AND Nachname LIKE '%text1%'))
|
Weiss jetzt nich genau obs das is was du willst und ob es stimmt...aber ich wollte es einfach mal in den Raum werfen
|
|
|
|
|
kugelfischi
Threadersteller
Dabei seit: 17.10.2006
Ort: datenstrom west
Alter: -
Geschlecht:
|
Verfasst Di 28.08.2007 13:19
Titel
|
|
|
hi Piexelpole,
vom Ansatz her denke ich schon dass das so ist, was ich brauche.
Wobei das Suchfeld frei ist, und somit auch mehrere Suchwörter
möglich sind. Somit würde diese Art der Abfrage recht umfangreich
werden. Gibt es vielleich noch eine andere Möglichkeit?
Nochmal ein kurzer Ablaufplan:
1. Man gibt nur ein Suchwort ein -> Dieses wird in x Datensätzen/Spalten gefunden
2. man gibt ein zusätliches Suchwort ein, um innerhalb des ersten Suchergebnis dieses erneut
zu filtern (reduzieren). Es müßen beide Suchwörter im Datensatz (Eintrag) vorhanden sein.
Gruß!
|
|
|
|
|
sxs_de
Dabei seit: 06.08.2007
Ort: Dettenheim
Alter: -
Geschlecht:
|
Verfasst Di 28.08.2007 22:08
Titel Re: [mysql] Suchfunktion mit LIKE |
|
|
kugelfischi hat geschrieben: | sxs_de hat geschrieben: |
SELECT * ist sowieso erstmal schwachsinnig man nimmt immer nur das was man braucht....!
|
Ja , ne ist klar. Meine Tabelle enthält nunmal mehrer Spalten, welche ich dann komplett Ausgeben will.
Also warum soll ich alle Spaltennamen nennen, wenn ich ALLE brauche und SELECT * dieses wunderbar vereinfacht????
sxs_de hat geschrieben: |
darüberhinaus würde ich einfach lesen was du schreibst (übersetz es dir...). |
Und das soll mir jetzt wie wieterhelfen? Hast DU überhaupt verstanden um was es geht?
Vielen Dank für nichts!
Gruß!
PS: Ich hoffe auf qualifiziertere Antworten. Bitte! Danke! |
sei mal ned so pissig wenn man dir helfen will nur ich für meinen teil habe z.b. bei jeder tabelle ein feld mit ID
und das brauch ich nicht mitzunehmen Oo
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 29.08.2007 12:34
Titel
|
|
|
Zitat: | ja , ne ist klar. Meine Tabelle enthält nunmal mehrer Spalten, welche ich dann komplett Ausgeben will.
Also warum soll ich alle Spaltennamen nennen, wenn ich ALLE brauche und SELECT * dieses wunderbar vereinfacht???? |
Der größte Nachteil sind (wenn man den Overhead außer acht lässt), sich eventuell ändernde Metadaten. Hier spielt nämlich dann nicht nur die Benennung eine Rolle, sondern ebenfalls die Reihenfolge der Spalten. Und gerade die sollte in keiner Weise ein Integritätskrititerium sein. Bsp.:
Id Nachname Vorname => Id Vorname Nachname
Schon bekommst du über einen indizierten Zugriff Probleme.
Dennoch gibt es in manchen Dbms optimierte Operationen mit "*", so zB der SELECT COUNT(*) Befehl in mysql, der eine performanceoptimierte Zählung aller Tupel ermöglicht (funktioniert aber dann nicht im Zusammenhang mit Aggregation).
|
|
|
|
|
|
|
|
Ähnliche Themen |
Suchfunktion mit PHP
[help] suchfunktion für webseiten
suchfunktion photoshop
Präsentation auf cd mit Suchfunktion
Golive-Suchfunktion?
Webgallerien mit Suchfunktion
|
|