如何在单个查询中查询来自多个表的数据,包括基于用户登录的“喜欢”数据

时间:2011-08-10 12:05:52

标签: mysql sql query-optimization

我有三个用于从数据库传输数据的表

stream_master
    stream_id
    user_id -> foreign Key
    stream_title
    stream_content

user
    user_id
    user_name
    password


stream_likes
    stream_like_id
    stream_id
    user_id

我可以联合起来获取数据流,但我希望根据用户(登录)活动获取每个“stream_master”行的“stream_likes”数据。意味着如果用户已经喜欢流为每行获得1

这可以在单个查询中执行吗?

我的输出应该是:

[stream_id => 10,
user_id => 10015,
stream_title=>"title of stream",
stream_content="stream content",
stream_like=>1],
[stream_id => 10,
user_id => 10018,
stream_title=>"title of stream222",
stream_content="stream content22",
stream_like=>0]

我无法为此找到一个好的解决方案。有人可以帮我这个吗?

由于

彼得

1 个答案:

答案 0 :(得分:0)

SELECT m.*, IF(l.stream_like_id IS NOT NULL, 1, 0) AS stream_like
FROM stream_master m
LEFT JOIN stream_likes l
ON m.stream_id = l.stream_id AND m.user_id = l.user_id

这会对你有用吗?