Also implementiere ich Suchfunktionalität in meine Anwendung, und ich muss die SQL-Abfrage schreiben, die die Datenbank nach Datensätzen auf der Grundlage einer Vielzahl von möglichen Parametern durchsuchen wird. Ich bin auch eine Probe von dem, was ich bisher habe:So erstellen Sie eine SQL-Suchabfrage mit unterschiedlichen Argumenten
SELECT m.*, a.*, p.*, e.*
FROM members m
LEFT JOIN addresses a ON m.member_id = a.address_member_id AND a.preferred_address = TRUE
LEFT JOIN phones p ON m.member_id = p.phone_member_id AND p.preferred_phone = TRUE
LEFT JOIN emails e ON m.member_id = e.email_member_id AND e.preferred_email = TRUE
WHERE m.member_id IN (
(SELECT address_member_id
FROM addresses
WHERE address = '123 Hart Ct' AND unit = NULL AND city = 'Hometown' AND state = 'NJ' AND zip_code = '08895'),
(SELECT phone_member_id
FROM phones
WHERE area_code = '732' AND prefix = '619' AND line_number = '7826'),
(SELECT email_member_id
FROM emails
WHERE email_address = '[email protected]')
)
AND m.first_name = 'Jane' AND m.middle_name = 'Deborah' AND m.last_name = 'Foster'
ORDER BY member_id ASC;
Wie Sie sehen, ich bin für Datensätze in der „Mitglieder“ Tabelle auf den Werten in dieser Tabelle sowie die Werte auf Basis der Suche der "bevorzugten" Adresse, Telefon, E-Mail, usw., die damit verbunden sind.
Das Problem besteht darin, dass die obige Abfrage erfordert, dass alle diese Werte bereitgestellt werden. In den meisten Fällen stellt der Benutzer nur eine Handvoll der tatsächlichen Werte zur Verfügung, um die Suche durchzuführen.
Nun, ich weiß, dass eine Option ist, die Abfrage dynamisch in meiner Anwendungsschicht, verketten Strings zusammen und was nicht. Auf diese Weise hätten die WHERE-Klauseln nur die Werte, die für diese spezifische Abfrage benötigt werden. Aber bevor ich das tue, frage ich mich, ob es irgendeinen Weg gibt, dies auf eine reine SQL-Weise zu erreichen?
Ich benutze MYSQL BTW. Vielen Dank.
wenn Sie die Abfrage durch Hibernate oder andere Frameworks Aufruf - Sie Einschränkungen Option für Ihre Bedingungen auf der Grundlage der v Hinzufügen Alue bestanden. Wenn Sie von Ihrer Anwendung aus direkt mit der db verbinden, dann ist der Ansatz, den ich kenne, nur Ihre Abfragezeichenfolge manuell anzuhängen !! – Pat