2016-08-11 41 views
0

这是我likes表中,喜欢的postImagespages使用他们的ID是那么存储基本上我想选择查询通知每当用户会喜欢pagespostImages那么他们应该是通知SESSION用户如何选择数据从单柱

例 - 用户ID(7)就喜欢PAGE_ID(7),用户ID (1)就喜欢PAGE_ID(5)

和我不想那些0值是显示在该列表中

likeID userID post_ID  page_ID 
     1  1  0   5 
     2  1  0   7 
     3  7  0   7 
     4  7  1   0 
     5  2  1   0 
     6  2  9   0 
     7  2  10   0 
     8  2  6   0 
     9  2  7   0 
     10 2  0   7 
     11 2  0   6 
     12 2  0   5 
     13 1  19   0 
+0

请及时更换标签,这不是一个PHP的问题是SQL 。最好你会指定风味r.g. MySQL的。我个人还发现描述不明确 – Barry

+0

也许你可以扩展你想要的结果并告诉我们你想要什么记录。因为如果你想当他们喜欢一个帖子或当他们喜欢一个页面,那么所有记录仍然会显示为当page_id不为空post_id = 0,反之亦然 – Matt

+0

请参阅我想要的是 当用户喜欢页面时,他们应该为此会话用户通知此用户有此页面 示例如果用户1喜欢pageID 3,那么他们应该是用户1拥有的通知,如pageId 3 –

回答

0

对于网页:

SELECT likeID, userID, page_ID 
FROM likes 
WHERE NOT page_ID = 0 

职位:

SELECT likeID, userID, post_ID 
FROM likes 
WHERE NOT post_ID = 0 

对于组合的清单:

SELECT likeID, userID, page_ID, null as post_ID 
FROM likes 
WHERE NOT page_ID = 0 
UNION ALL 
SELECT likeID, userID, null as page_id, post_ID 
FROM likes 
WHERE NOT post_ID = 0 
+0

如果正确构造where语句,那么union all是绝对不需要的,而不是使空值为0的查询仍将返回表中的所有记录。无可否认,这是OP似乎表明他们想要的东西..但是有几个案例陈述与正确的地方,你有你的答案...... – Matt

+0

所以我应该如何使用,如果它返回所有的值?如果我得到页面查询,那么它仍然适用 –