mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 24.04.2024 16:41 Benutzername: Passwort: Auto-Login

Thema: [mysql] Suchfunktion mit LIKE vom 28.08.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [mysql] Suchfunktion mit LIKE
Autor Nachricht
kugelfischi
Threadersteller

Dabei seit: 17.10.2006
Ort: datenstrom west
Alter: -
Geschlecht: Männlich
Verfasst Di 28.08.2007 09:45
Titel

[mysql] Suchfunktion mit LIKE

Antworten mit Zitat Zum Seitenanfang

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ß!
  View user's profile Private Nachricht senden
sxs_de

Dabei seit: 06.08.2007
Ort: Dettenheim
Alter: -
Geschlecht: Männlich
Verfasst Di 28.08.2007 12:50
Titel

Re: [mysql] Suchfunktion mit LIKE

Antworten mit Zitat Zum Seitenanfang

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...).
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
kugelfischi
Threadersteller

Dabei seit: 17.10.2006
Ort: datenstrom west
Alter: -
Geschlecht: Männlich
Verfasst Di 28.08.2007 12:57
Titel

Re: [mysql] Suchfunktion mit LIKE

Antworten mit Zitat Zum Seitenanfang

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!
  View user's profile Private Nachricht senden
Pixelpole

Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht: Männlich
Verfasst Di 28.08.2007 13:08
Titel

Antworten mit Zitat Zum Seitenanfang

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 Ooops
  View user's profile Private Nachricht senden
kugelfischi
Threadersteller

Dabei seit: 17.10.2006
Ort: datenstrom west
Alter: -
Geschlecht: Männlich
Verfasst Di 28.08.2007 13:19
Titel

Antworten mit Zitat Zum Seitenanfang

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ß!
  View user's profile Private Nachricht senden
sxs_de

Dabei seit: 06.08.2007
Ort: Dettenheim
Alter: -
Geschlecht: Männlich
Verfasst Di 28.08.2007 22:08
Titel

Re: [mysql] Suchfunktion mit LIKE

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Mi 29.08.2007 12:34
Titel

Antworten mit Zitat Zum Seitenanfang

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
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.