2017-03-07 54 views
1

我刚刚学习sql,并且创建了一个社交网络作为学习体验。我有两个表,分别叫做StreamsVotes,Streams会拉取用户创建的内容,而Votes会存储人们喜欢的内容。我试图弄清楚的是,如何从两个表中返回数据来检查用户是否喜欢显示的特定帖子。例如,这就是我的表格的外观。如果你看到他们都有一个共同的字段stream_id,他们都有编号278.我怎么能做一个内部连接,检查两个表中是否有任何共同的stream_ID?这是我使用让我流数据SQL如何从这两个表创建内部联接

查询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代码。我已经尝试过这个SQL查询,但这只返回总共1个结果。再次,我想返回Streams表中的所有结果,我在查询1中进行操作,并在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 

Streams Table

投票 Votes Table

+0

请阅读http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557和接受的答案 –

回答

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

+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 
+0

非常感谢您的帮助 –