[英]SQL - multiple tables in search form
我的SQL代碼有問題。 這里是:
SELECT fur.*, cat.overskrift, cat.ikon, cat.id AS categoryID, cat.language AS catLang
FROM furniture AS fur
LEFT JOIN furniture_translated AS fur_tra
ON fur_tra.furniture_id = fur.id
LEFT JOIN furniture_categories_translated AS fur_cat_tra
ON ((fur_cat_tra.category_id = fur.category AND fur_cat_tra.language = '".beforeDB($user_language)."')
OR (fur_cat_tra.category_id = fur_tra.category AND fur_cat_tra.language = '".beforeDB($user_language)."'))
LEFT JOIN furniture_categories AS cat
ON (
(fur.category = cat.id AND cat.language = '".beforeDB($user_language)."')
OR
(fur_tra.category = cat.id AND fur_cat_tra.language = '".beforeDB($user_language)."')
)
WHERE
(fur.language = '".beforeDB($user_language)."' OR fur_tra.language = '".beforeDB($user_language)."')
AND
(
((cat.heading LIKE '%".beforeDB($search)."%' AND cat.language = '".beforeDB($user_language)."') OR (fur_cat_tra.heading LIKE '%".beforeDB($search)."%' AND fur_cat_tra.language = '".beforeDB($user_language)."'))
OR
(
(fur.name LIKE '%".beforeDB($search)."%')
OR
(fur_tra.name LIKE '%".beforeDB($search)."%')
)
)
ORDER BY
cat.heading ASC, fur.name ASC
beforeDB是我在PHP中制作的函數。它返回mysql_real_escape_string()中的值。
$ search是用戶在搜索時輸入的字符串。
$ user_language是訪問者的語言代碼。
網站是什么:
該網站提供家具列表,並且是一個多語言網站。 家具和類別應予以翻譯。 應該可以更改每種語言的類別。 一個例子:我希望有可能在英語版本的廚房類別中放置一個架子,而在德語版本的廚房類別中放置一個架子。
我要實現的目標:
有一個搜索選項,用戶可以輕松找到他們要尋找的家具。 他們應該用他們的語言搜索家具。
問題是什么:
如果我翻譯家具,當它翻譯成另一種語言時,我仍然可以搜索英文名稱。 例如,如果我的語言是德語,那么我搜索了英文名稱; 經過英語搜索,我會得到德國列出的家具。 那不可能。
任何幫助,將不勝感激。
如果我正確地閱讀了所有這些內容,則可以使用額外的ORDER BY
子句強制將“非英語”結果顯示在英語之前:
ORDER BY
fur_tra.language = beforeDB($user_language) DESC,
cat.header, fur.name
new子句的計算結果為簡單的布爾值true / false,對於排序目的,MySQL會將其視為1
和0
。 因此,與用戶選擇的語言匹配的任何結果都將顯示為1
,並首先通過DESC排序進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.