2012-04-10 114 views
0

我會嘗試儘可能地設置場景。 *燈蠟燭合併來自MySQL的結果查詢

什麼,我想acheive是這個

  1. 搜索image_likes,看看用戶是否喜歡任何圖像,然後將它們包括在下一查詢。
  2. 從用戶上傳的images中獲取所有圖片。
  3. 顯示結果以及ORDER BY id DESC。

在MySQL中,當涉及到包括不同的表結果時,我很可怕,所以我希望我已經包含了足夠的信息。讓我知道如果你需要了。

表結構

image_likes

ID | user_id | image_id

images

ID | uploader_id |日期

+0

除非你有一個很奇怪的表結構,這應該是可行的與單'joined'查詢:http://en.wikipedia.org/wiki/Join_%28SQL%29 – 2012-04-10 21:42:18

+0

真的會什麼有幫助是你已經試過的代碼,結果是什麼 – orourkek 2012-04-10 21:43:09

+0

@orourkek我沒有嘗試過,而是研究過。他們有很多不同類型的連接,我不知道從哪裏開始。 – Harry 2012-04-10 21:48:26

回答

-1

1:

SELECT * FROM Image_Likes WHERE User_Id = x ORDER BY Id DESC 

2:

SELECT * FROM Images WHERE Uploader_Id = x ORDER BY Id DESC 

3:(一起)

SELECT L.*, I.* FROM Image_Likes L LEFT JOIN Images I ON L.Image_id = I.Id WHERE L.User_ID = x ORDER BY I.Id DESC 

x替換用戶的ID

+0

只是爲了澄清,這是否選擇和搜索'圖像'的所有'image_likes'結果? – Harry 2012-04-10 22:12:56

+0

而且#1064 - 你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的'LEFT JOIN Images I ON L.Image_id = I.Id ORDER BY I.Id DESC LIMIT 0,30'附近使用正確的語法。:( – Harry 2012-04-10 22:17:26

+0

是的!從第一位獲取所有結果(來自Image_Likes的ID的任何匹配)並嘗試使用Images表中的相應值加入它們(ON l.image_id = I.id) – citizenen 2012-04-10 22:17:50

0

你確實應該嘗試掌握JOIN。您將不斷編寫錯誤的代碼,並設計不良的數據庫以解決不知道如何使用它們的問題。

SELECT * 
FROM images 
LEFT JOIN image_likes ON image_likes.image_id = images.id 
WHERE image_likes.user_id = $my_id 
OR images.creator_id = $my_id 
ORDER BY images.id DESC 
+0

該代碼沒有按預期工作。它包括其他人喜歡,如果它是當前用戶上傳。我會玩它 – Harry 2012-04-10 23:38:56

+0

@Trendee如果我沒有弄錯,我相信你可以添加一個AND到ON子句,添加一個'image_likes.user_id = $ my_id' – dqhendricks 2012-04-11 05:25:57