我正在学习SQL,我正在创建一个社交网络作为学习体验。我有两个名为 Streams 和投票的表格,Streams提取用户创建的内容,而Votes存储人们喜欢的内容。我想弄清楚的是我如何从两个表中返回数据以检查用户是否喜欢显示的特定帖子。例如,这就是我的表格的外观。如果您看到它们都有一个共同的字段 stream_id ,并且它们都有数字278.如何进行内部联接以检查两个表中是否有任何公共stream_ID?这是我使用的sql代码,它为我提供了Stream数据
查询1
select post,profile_id,
votes,id as stream_id FROM streams WHERE latitudes>=28.1036 AND
28.9732>=latitudes AND longitudes>=-81.8696 AND -80.8798>=longitudes
order by id desc limit 10
用户ID为11,Streams.profile_id和Votes.my_id都是相同的字段。我已经尝试过这个SQL查询,但这只返回1个结果。我想再次返回我在查询1中执行的Streams表中的所有结果,并在Votes表中添加另一列Votes.stream_id = Streams.ID的结果,因为它将显示特定用户喜欢的帖子。任何大麻都会很棒
查询2
select s.post,s.profile_id,
s.votes,s.id as stream_id, v.my_id as ID FROM streams s inner join Votes v on (s.id = v.stream_id) WHERE latitudes>=28.1036 AND
28.9732>=latitudes AND longitudes>=-81.8696 AND -80.8798>=longitudes
order by id desc limit 10
答案 0 :(得分:1)
我认为您正在寻找LEFT JOIN
select s.post,s.profile_id,
s.votes,s.id as stream_id, v.my_id as ID FROM streams s LEFT JOIN Votes v on (s.id = v.stream_id) WHERE latitudes>=28.1036 AND
28.9732>=latitudes AND longitudes>=-81.8696 AND -80.8798>=longitudes
order by id desc limit 10
答案 1 :(得分:1)
您需要使用LEFT OUTER JOIN
代替INNER JOIN
。
SELECT s.post, s.profile_id, s.votes, s.id as stream_id, v.my_id as ID
FROM streams s
LEFT OUTER JOIN Votes v on (s.id = v.stream_id) WHERE latitudes>=28.1036 AND
28.9732>=latitudes AND longitudes>=-81.8696 AND -80.8798>=longitudes
order by id desc limit 10
有关联接的详细信息,请查看here。