как использовать запрос sqlite для получения данных, которые мне нужны, из трех таблиц?

У меня есть приложение для Android, которое использует предварительно заполненную базу данных sqlite, проблема в том, что мне нужно сделать запрос на выборку из 3 таблиц, где первая таблица

место проведения

  • _id
  • имя
  • город

команда

  • _id
  • group_id
  • код
  • имя

соответствие

  • _id
  • сцена
  • место проведения_id
  • team1_id
  • team2_id
  • подать мяч

что мне нужно, так это сделать запрос выбора, который имеет название от места проведения, начало от матча, название от команды и название от команда

где первое имя – первая команда, а второе – вторая команда

это мой запрос:

select v.name,m.[kickoff],t.name,stage
from venue v,match m,team t
where m.venue_id = v._id
and 
t._id = m.team1_id
and 
t._id = m.team2_id

person user3499032    schedule 17.04.2014    source источник
comment
Есть ли проблема с запросом, который вы разместили, или вы спрашиваете, как выполнить запрос?   -  person CurlyPaul    schedule 17.04.2014
comment
нет, в моем запросе ошибка, я думаю, в последней строке, и я спрашиваю, есть ли какое-либо другое решение, чтобы получить то, что я хочу   -  person user3499032    schedule 17.04.2014


Ответы (1)


Я думаю, что этот запрос должен быть тем, что вам нужно:

SELECT v.Name, m.[kickoff], team1.name, team2.name, stage
    FROM Match AS m
    INNER JOIN Venue AS V ON m.venue_id = v._id
    INNER JOIN Team AS team1 ON m.team1_id = team1._id
    INNER JOIN Team AS team2 ON m.team2_id = team2._id

Я думаю, что проблема с вашим исходным запросом заключается в том, что на самом деле есть две команды, связанные с матчем, но вы учитываете только одну и последнюю часть вашего запроса:

t._id = m.team1_id
and 
t._id = m.team2_id

... будет верным только в том случае, если команда играет сама.

person CurlyPaul    schedule 17.04.2014
comment
поэтому я сделаю 2 таблицы team1 и team2, чтобы получить свой результат, спасибо - person user3499032; 17.04.2014
comment
У вас может быть только одна таблица — Teams — и дважды присоединиться к ней в запросе. Обратите внимание, что в примере фактическое имя таблицы такое же, но я даю каждому псевдоним. - person CurlyPaul; 17.04.2014
comment
как присоединиться к командному столу дважды и получить результат без одной и той же ошибки будет верным только в том случае, если команда играет сама по себе. - person user3499032; 17.04.2014
comment
Как и в моем примере, одна из таблиц команд соединяется с Match.team1_id, а другая — с Match.team2_id. Таким образом, вы присоединяетесь к 2 командам, каждая из которых присоединилась к другому внешнему ключу в матче. - person CurlyPaul; 17.04.2014