Android SQLite查询多个表

时间:2011-07-31 19:14:00

标签: android sqlite join

我试图做这样的事情(这是MySQL格式)

SELECT q.question_id, q.question, q.answer
FROM relationship r, questions q
WHERE r.cat_id =1
AND r.question_id = q.question_id
LIMIT 0 , 30

所以,我把问题存储在一个表中,然后是另一个表中的类别。我设置了关系表,以便问题可以分为多个类别。所以说一个问题的id为5,并且它在3个不同的类别中,关系表看起来像这样

relation_id, question_id, category_id
    1            5            1
    2            5            2
    3            5            3
    4            6            1  

所以,说我想得到cat_id为1的所有问题,我应该得到2个结果。这基本上就是我要做的。

2 个答案:

答案 0 :(得分:3)

如果你想要cat_id为1的所有问题,那么你想要这个:

select q.question, q.answer
from questions q
join relationship r on q.question_id = r.question_id
where r.cat_id = 1

我在WHERE子句中切换到ANSI连接语法而不是隐含的连接条件,因为显式版本有助于避免某些类型的错误;特别是,ANSI连接有助于避免意外交叉产品,这就是你的“MySQL格式”查询所具有的,因为你忽略了包含category的连接条件。这种偶然的交叉产品几乎可以肯定是“每次退货3次”问题的来源。

答案 1 :(得分:1)

SELECT q.question, q.answer
FROM questions q
left join category c on q.catID = c.catID
left join relationship r on q.relID = r.relID

这样的事情将成为技巧