【发布时间】:2012-01-25 01:17:53
【问题描述】:
我尝试从4个表中选择数据(最后一个表需要统计数据)
我的 MySQL 表结构
用户
id
username
图片
id
user_id
image
用户关注
id
user_id
follow_id
评论
id
user_id
image_id
text
我有这个 SQL 查询:
$sql = "SELECT u.username as user, i.image as user_image, p.image, p.date
FROM users u
LEFT JOIN user_follow f ON u.id = f.follow_id
LEFT JOIN images p ON p.user_id = u.id
LEFT JOIN images i ON i.id = (SELECT b.id FROM images AS b where p.user_id = b.user_id ORDER BY b.id DESC LIMIT 1)
WHERE f.user_id = 3 OR p.user_id = 3
ORDER BY p.date DESC";
此行返回用户当前图片(最后一张图片)
LEFT JOIN images i ON i.id = (SELECT b.id FROM images AS b where p.user_id = b.user_id ORDER BY b.id DESC LIMIT 1)
它会返回我和我朋友的所有图片
[0] => Array
(
[user] => 8888
[user_image] => second.jpg
[image] => second.jpg
[date] => 2012-01-24 14:42:27
)
[1] => Array
(
[user] => 8888
[user_image] => second.jpg
[image] => first.jpg
[date] => 2012-01-24 14:42:27
)
[2] => Array
(
[user] => 3333
[user_image] => ax46l7v7vugnesk10whk_339.jpg
[image] => ax46l7v7vugnesk10whk_339.jpg
[date] => 2012-01-24 01:54:19
)
[3] => Array
(
[user] => 3333
[user_image] => ax46l7v7vugnesk10whk_339.jpg
[image] => aaaaaaaa.jpg
[date] => 2012-01-24 01:49:57
)
我尝试添加
left join commentaries c ON c.user_id = u.id
结果是
[2] => Array
(
[user] => 3333
[user_image] => ax46l7v7vugnesk10whk_339.jpg
[image] => ax46l7v7vugnesk10whk_339.jpg
[date] => 2012-01-24 01:54:19
[id] => 1
)
[3] => Array
(
[user] => 3333
[user_image] => ax46l7v7vugnesk10whk_339.jpg
[image] => ax46l7v7vugnesk10whk_339.jpg
[date] => 2012-01-24 01:54:19
[id] => 2
)
[4] => Array
(
[user] => 3333
[user_image] => ax46l7v7vugnesk10whk_339.jpg
[image] => aaaaaaaa.jpg
[date] => 2012-01-24 01:49:57
[id] => 1
)
[5] => Array
(
[user] => 3333
[user_image] => ax46l7v7vugnesk10whk_339.jpg
[image] => aaaaaaaa.jpg
[date] => 2012-01-24 01:49:57
[id] => 2
)
如果有评论,则重复用户(顺便说一下,[user] => 3333 有 2 个 cmets)
我正在尝试再添加一个表“评论”并计算每张图片(来自我和我的朋友)有多少评论,如果没有带有此类 $user_id 的评论,则返回 0
【问题讨论】:
-
看起来 cmets 与图像无关。
commentaries表中应该有image_id列。 -
你是对的,我已经在我的数据库中添加了另外一个字段 image_id 但仍然不知道如何添加“评论”表和计数图像