2011-06-07 53 views
0

我似乎已经达到了这个目标,并希望有人能给我一个正确的方向。列中的SQL SELECT复杂表达式 - 其他布尔

我有一个类似于新闻阅读器客户端的web应用程序。它是用Python编写的,并使用SQLAlchemy,但这并不重要,因为我试图让我的头部围绕SQL,我也使用SQLite作为后端。

有一个用户表和一个文章表,用户表很明显,文章表存储单个文章(如新闻服务器上的文章)。我通过使用另一个表Users_Articles的多关系来跟踪哪个用户读过哪篇文章。

的(减少)的模式是这样的:

Users: 
    user_id 
    user_name 

Articles: 
    article_id 
    article_body 

Users_Articles: 
    user_id 
    article_id 

我试图做的是选择,但也显示该文章已经被当前用户阅读的文章列表从而我想添加一个布尔列到SELECT语句中的一组列中,它表示在Users_Articles中是否有一行引用当前用户的文章。

回答

1

你可以用左外前去捧场

select 
a.article_id, a.article_body, 
ua.article_id as as been_read --will be not null for read articles 
from Articles a 
left outer join Users_Articles ua 
    on (ua.article_id = a.article_id and ua.user_id = $current_user_id) 

或子查询

select 
a.article_id, a.article_body, 
(select 1 from Users_Articles ua 
    where ua.article_id = a.article_id 
    and ua.user_id = $current_user_id) as been_read --will be not null for read articles 
from Articles a 
+0

谢谢您的回答,非常简单,但由于某种原因,我不能让我的心灵周围。 – Geoff 2011-06-07 18:07:08