Android SQLite запрашивает несколько таблиц - PullRequest
0 голосов
/ 31 июля 2011

Я пытаюсь сделать что-то вроде этого (это формат 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

Итак, я получил вопросы, хранящиеся в одной таблице, а затем категории в другой таблице. У меня есть таблица отношений, настроенная так, что вопрос может быть в нескольких категориях. Скажем, у вопроса с идентификатором 5 и в трех разных категориях таблица отношений будет выглядеть так:

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

Итак, скажем, я хочу получить все вопросы с cat_id 1, я должен получить 2 результата. Это в основном то, что я пытаюсь сделать.

Ответы [ 2 ]

3 голосов
/ 31 июля 2011

Если вам нужны все вопросы с 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

Я переключился на синтаксис соединения ANSI, а не на условия подразумеваемого соединения в предложении WHERE, потому что явноеверсия помогает избежать определенных типов ошибок;в частности, объединения ANSI помогают избежать случайных перекрестных продуктов, и это именно то, что имеет ваш запрос «MySQL format», потому что вы не включили условие объединения для category.Этот случайный перекрестный продукт почти наверняка является источником вашей проблемы «возвращает каждый товар 3 раза».

1 голос
/ 31 июля 2011
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

Что-то вроде этого будет уловка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...