簡體   English   中英

如何在單獨的mysql表中搜索字詞?

[英]How do I search for term in separate mysql tables?

我想搜索多個列和多個表。

我在這里將所有表導入sqlfiddle: http ://www.sqlfiddle.com/#!2/60689e /3

我想user id, name_surname, avatar, from users table選擇user id, name_surname, avatar, from users table基於關鍵字,匹配user id, name_surname, avatar, from users table “ location”或“ name_surname”列。 這是相對簡單的:

SELECT u.name_surname,
       u.avatar,
       u.location
FROM users u
WHERE u.location LIKE :kwd
OR u.name_surname LIKE :kwd

對我來說,最棘手的部分是查詢表中是否有words_en表中的匹配 ,該表本質上應該在連接表中查詢,在該表中我實際上可以看到哪個用戶與哪個詞相關聯...我該怎么做最后一部分逃脫了。

所以我可能需要:

  1. 查詢words_en,找出是否完全匹配。
  2. 如果有匹配項,我需要查看word_en word的ID,並查看該ID是否存在於連接表中。
  3. 從連接表中選擇不同的user_id。
  4. 為所選的user_id選擇name_surname。

感謝您的光臨。 S.

要基於對words_en表的搜索來獲取所有用戶,看起來像SQL Fiddle

SELECT u.id, u.name_surname, u.avatar
FROM users AS u
WHERE u.id IN 
(
  SELECT c.user_id
  FROM connections AS c 
    JOIN words_en AS w 
    ON w.id = c.word_id
  WHERE w.word = 'word1'
    OR w.word = 'word2'
) 
AND u.location LIKE '%Nunya%'
  OR u.name_surname LIKE '%sandro%'

如果要對三個字段中的任何一個使用相同的搜索詞,請使用以下內容:

SELECT u.name_surname, u.avatar, u.location
FROM users AS u
  JOIN connections AS c ON c.user_id = u.id
  JOIN words_en AS w ON w.id = c.word_id
WHERE (w.word LIKE '%word1%'
  OR u.location LIKE '%word1%'
  OR u.name_surname LIKE '%word1%') 
  AND u.privacy = 3

希望我不要誤會你的問題。 如果我在某些地方做錯了,請糾正我。

SELECT u.name_surname,
       u.avatar,
       u.location
FROM USERS AS U
INNER JOIN CONNECTIONS AS C
ON  C.USER_ID = U.ID
INNER JOIN WORDS_EN AS W
ON  W.ID = C.WORD_ID
AND W.WORD LIKE 'word1%'

例如,我已對word1進行了硬編碼,如果需要所有用戶信息都具有連接能力,而不論WORDS_EN中的單詞是什么,也可以將WORDS_EN INNER JOIN WORDS_ENLEFT JOIN

暫無
暫無

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

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