2012-04-10 117 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