Выборка значений на основе таблицы сопоставления, которая использует идентификаторы из двух разных таблиц - PullRequest
0 голосов
/ 29 июня 2018

Я делаю приложение для обнаружения болезней. Это своего рода базовое приложение с базовым пользовательским интерфейсом для целей обучения, и я использую базу данных SQLite для извлечения из нее симптомов и заболеваний. У меня есть три таблицы в моей базе данных, одна - Symptoms_table, она имеет следующие атрибуты:

Symp_id  symptoms
"1"      "cold"
"2"      "fever"
"3"      "headache"
"4"      "vomit"
"5"      "weakness"
"6"      "bodypain"
"7"      "stomachache"
"8"      "loosemotion"

У меня есть еще одна таблица с именем Disease table, которая имеет следующие атрибуты:

 Dis_id   Disease
  "1"     "Jaundice"
  "2"     "Malaria"
  "3"     "Typhoid"
  "4"     "ChickenPox"

И у меня есть третья таблица для отображения идентификаторов из обеих этих таблиц. Имя таблицы «Карта» и имеет следующие атрибуты:

sym_id  dis_id
 "1"    "2"
 "1"    "4"
 "2"    "1"
 "2"    "2"
 "2"    "3"
 "2"    "4"
 "3"    "1"
 "3"    "2"
 "3"    "4"
 "4"    "1"
 "4"    "3"
 "5"    "1"
 "5"    "2"
 "5"    "3"
 "5"    "4"
 "6"    "2"
 "6"    "4"
 "7"    "1"
 "7"    "3"
 "8"    "1"
 "8"    "3"
 "8"    "4"

Я уже пытался использовать соединения, такие как LEFT JOIN, RIGHT JOIN и INNER JOIN, но я не получил то, что хотел. На самом деле, я хочу, чтобы столбцы симптомов из Symptoms_table и столбца Disease из Disease_table основывались на идентификаторах, которые сопоставлены в таблице Map. Чтобы я мог отображать болезни на основе симптомов, выбранных в моем приложении, и отображать симптомы на основе болезней в расширяемом списке просмотра. Я хотел работать в обоих направлениях. Я все еще учусь работать с этими сложными SQL-запросами.

1 Ответ

0 голосов
/ 29 июня 2018

Вам нужно будет выбрать из обеих таблиц, в этом решении я буду использовать псевдоним , одна из них либо сработает, либо даст вам перекрестное соединение, но не помешает попробовать:

SELECT S.symptoms, D.disease
FROM Symptoms_table S, Map M
FULL OUTER JOIN Disease_table ON S.symp_id = M.sym_id

OR

SELECT S.symptoms, D.disease
FROM Symptoms_table S, Map M, Disease_Table D
WHERE S.Symp_id = M.sym_id and M.dis_id = D.Disease

Это должно поставить вас на правильный путь, по крайней мере ..

...