2011-11-09 72 views
0

我不知道這是否可能,但我有搜索用戶,我想在每個鍵入的字母后帶來結果,所以我試圖使搜索工作儘可能快可能,但我的雄心勃勃的太高了,我的知識。複雜的mysql搜索查詢條件很少

我有users db,relations (id, user_id, follower_id, status)哪一個我包括使用LEFT JOIN兩次,第一次作爲追隨者和比以下。

所以我想要做的,我要把結果放在第一位,就像第一個我想要得到的人,跟隨用戶,最後跟隨用戶,跟隨用戶,跟隨用戶其他。我想限制所有搜索到最多10行。如果這是可能的只是在mysql中做某事?我已經在php中完成了這個工作,但這涉及到數據庫的許多查詢。

如果有什麼方法可以設置知道哪些行是哪個contidion,那麼也很有趣。

UPDATE

我需要得到以什麼順序什麼:

用戶下列條件:

  1. 通過搜索查詢&用戶以下,他們回來之後。
  2. 通過搜索查詢&用戶關注。
  3. 通過搜索查詢&跟隨用戶的人。
  4. 通過搜索查詢

訂單:

  1. 用戶以下,他們回來之後。
  2. 用戶關注。
  3. 跟隨用戶的人。
  4. 其他。

限制:0,10

我相信這是沒有辦法,我可以簡單的無序結果在那個特定的方式,所以我想使用子查詢或更復雜的東西,但我的MySQL的知識太低,並不知道如果這是可能做一個查詢,或者我只需要在每個條件下使用單獨的查詢。

+2

你的問題是不可理解的,嘗試的結果是你想要什麼更好的方式來解釋...... – Marcx

+0

我想要的是來自用戶表格的行 – Giedrius

回答

0

我沒有測試它,但我會嘗試這樣的事情:

select distinct u.* from users u, relations r where u.id = r.user_id or u.id = r.follower_id order by u.id = r.user_id 
+0

我已經這樣做了,但是以這種方式,我不能以我想要的方式來排序行。我需要先讓用戶跟隨他們,然後他們跟隨回來,比如沒有足夠的行來獲取用戶關注的人,如果用戶不夠用戶關注用戶,最後如果還沒有達到限制,找到任何人來自適合搜索查詢的那張表。 – Giedrius