Mysql查询三个带内连接的表

时间:2014-07-21 17:50:50

标签: mysql

我需要确定哪个用户(来自第二个表)发布了第一个表中的图像以及特定用户是否对照片进行了评级(来自第三个表)。

要传递给php页面和mysql查询的数据是

  • 打开页面的用户的ID
  • 需要显示的照片的ID

我尝试过的Mysql查询如下:

SELECT images.*, users.name, likes.user
FROM images
INNER JOIN users
  ON users.id = images.user
LEFT JOIN likes
  ON likes.user = '22'
WHERE images.pic_name = 'pic1'
LIMIT 1

表格图片:

  id    |    pic_name   |    user
-------------------------------
   1    |      Pic1     |     11
   2    |      Pic2     |     22
   3    |      Pic3     |     33

表用户:

   id    |     name  |  status
--------------------------------
   11    |    name 1 |    1
   22    |    name 2 |    1
   33    |    name 3 |    1 

表喜欢:

  id   |   pic_name  | user
 ----------------------------
   1   |    pic 1    |  22

用户“22”和“Pic1”的结果应如下所示:

   id    |    name      |    user
-----------------------------------
   1     |    name 1    |    22

用户“11”(此用户未评级图片)和“Pic1”的结果应如下所示:

   id    |    name      |    user
-----------------------------------
   1     |    name 1    |    null

什么是mysql查询才适合并为此提供解决方案?

1 个答案:

答案 0 :(得分:1)

似乎你在正确的轨道上,你只是选择了一些奇怪的字段,并且在左连接中缺少与图片名称匹配的条件;

SELECT images.id, users.name, likes.user
FROM images
JOIN users 
  ON users.id = images.user
LEFT JOIN likes
  ON likes.pic_name = images.pic_name
 AND likes.user = 22
WHERE image.pic_name = 'pic1';

An SQLfiddle to test with