簡體   English   中英

SQL-搜索表中的多個表

[英]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會將其視為10 因此,與用戶選擇的語言匹配的任何結果都將顯示為1 ,並首先通過DESC排序進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM