Ich habe ein Suchfeld, das ich 6 Spalten in meiner Schuldatenbank suchen möchte, wenn eine Eingabe gemacht wird. Bisher durchsucht das Suchfeld nur das Namensfeld und gibt eine Übereinstimmung für exakte oder partielle Eingaben zurück.Suche mehrere Spalten mit einem oder mehreren Schlüsselwörtern mit sql
Ich würde gerne nach einer bestimmten Stadt suchen und alle Ergebnisse aus dem Namen UND Stadt Spalten (und nicht nur die Name Spalte) und so weiter.
Angenommen, ich wollte mit einer Postleitzahl suchen, ich möchte, dass die Einträge alle Schulen in dieser Postleitzahl sind. Und schließlich, wenn ich 2 Wörter eingib (z. B. Penn Philadelphia), möchte ich, dass alle Penn-Schulen zeigen, dass sie nur in der Spalte Name UND in der Stadt sind. (nicht nur alle Penns im Namen oder jede Schule in Philadelphia) und so weiter. Das mag eine elementare Frage sein, aber ich habe Tage lang erfolglos gesucht. Vielleicht würde mir eine bessere Verwendung von Platzhaltern und den "AND" "OR" -Klauseln zugute kommen.
Kann mir jemand helfen, eine SQL-Abfrage zu strukturieren, um dies zu erreichen?
das ist, was ich bisher:
SELECT * FROM schools
WHERE (name='%name%' OR address='%name%' OR city='%name%'OR zip='%name%')
können Sie mehrere Ansätze verwenden: zum Beispiel "penn" zu haben und "Philadelphia" Sie tun können: SELECT * FROM Schulen WHERE name = 'penn' AND Stadt = 'Philadelphia' ; 'Sie können einige Bedingungen miteinander kombinieren. Ein anderer Ansatz: 'SELECT * FROM Schule s1, Schule s2 JOIN ON s1.name = s2.name WHERE s1.name = 'penn' AND s1.city = 'philadelphia';' Hier können Sie auch mehrere Joins verwenden gehen Sie nicht wild mit ihm, aber mit einem guten Index hilft letzteres robust – Hamed
Es gibt auch einen anderen Ansatz, den Sie ein paar geschachtelte SELECTs verwenden können (nicht empfohlen), wie Sie tun: 'SELECT * FROM Schulen WHERE (SELECT * FROM Schulen WHERE name = ' penn ') AS s1 UND city =' philadelphia '; '. Gehen Sie nicht zu tief darauf, da es unangenehm werden würde. Wählen Sie, was am besten zu Ihnen passt – Hamed
@RyanVincent es ist nicht wirklich eine richtige Antwort mehr wie ein paar Tipps – Hamed