В одной таблице несколько ссылок на другую таблицу - MySQL
Формулировка задачи:
В схеме БД существует связь между таблицами ВидыПолисов и Риски, когда ВидыПолисов имеет несколько ссылок на Риски.
Как вывести ВидыПолисов с наименованиями Рисков?
Были варианты:
Но все это неправильно.
SELECT КодВидаПолиса, Наименование, Описание, Условия, риски.Наименование, риски.Наименование, риски.Наименование FROM видыполисов, риски WHERE видыполисов.КодРиска1 = риски.КодРиска, видыполисов.КодРиска2 = риски.КодРиска, видыполисов.КодРиска3 = риски.КодРиска
SELECT КодВидаПолиса, Наименование, Описание, Условия, риски.Наименование, риски.Наименование, риски.Наименование FROM видыполисов LEFT JOIN риски ON видыполисов.КодРиска1 = риски.КодРиска, видыполисов.КодРиска2 = риски.КодРиска, видыполисов.КодРиска3 = риски.КодРиска
Решение задачи: «В одной таблице несколько ссылок на другую таблицу»
textual
Листинг программы
SELECT КодВидаПолиса , Наименование , Описание , Условия , р1.Наименование , р2.Наименование , р3.Наименование FROM видыполисов LEFT JOIN риски р1 ON р1.КодРиска = видыполисов.КодРиска1 LEFT JOIN риски р2 ON р2.КодРиска = видыполисов.КодРиска2 LEFT JOIN риски р3 ON р3.КодРиска = видыполисов.КодРиска3
Объяснение кода листинга программы
- В данном коде происходит выборка данных из двух таблиц:
видыполисов
ириски
. - Для связи этих таблиц используются три поля:
КодРиска1
,КодРиска2
,КодРиска3
. - Используется оператор JOIN для объединения строк из таблицы
риски
с данными из таблицывидыполисов
. - В результате выборки получаем следующие поля:
КодВидаПолиса
,Наименование
,Описание
,Условия
,р1.Наименование
,р2.Наименование
,р3.Наименование
. - Из-за использования оператора LEFT JOIN, в результат выборки будут включены все строки из таблицы
видыполисов
, а также только те строки из таблицыриски
, у которых есть соответствующие значения в поляхКодРиска1
,КодРиска2
,КодРиска3
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д