2017-03-07 60 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

非常感謝您的幫助 –