0
因此,我在我的應用程序中實現了搜索功能,並且我需要編寫SQL查詢來根據各種可能的參數在數據庫中搜索記錄。我包括樣本是我到目前爲止有:如何使用各種參數創建SQL搜索查詢
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;
正如你所看到的,我在基於該表中的值「成員」表中搜索記錄,以及價值觀與之相關聯的「首選」地址,電話,電子郵件等。
問題是上面的查詢需要提供所有這些值。在大多數情況下,用戶只會提供少數實際值來執行搜索。
現在,我知道一個選擇是在我的應用程序層中動態構建查詢,並將字符串連接在一起,而不是什麼。這樣,WHERE子句將只具有該特定查詢所需的值。但在我這樣做之前,我想知道是否有任何方法可以以純SQL方式完成此任務?
我使用MYSQL btw。謝謝。
如果您通過hibernate或其他框架調用查詢 - 您有基於v添加條件的約束選項Alue通過。如果你直接從你的應用程序連接到數據庫,那麼我知道的方法是手動追加你的查詢字符串! – Pat