Структуризированный язык запросов (SQL)


Эквисоединение таблиц


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

Меню Трапезы Вид_блюд Блюда

ТВБЛТТрапезаВВидБЛБлюдоВОсноваВыходТруд

1З31ЗавтракЗЗакуска1Салат летнийЗОвощи200.3

1З31ЗавтракЗЗакуска2Салат мяснойЗМясо200.4

1З31ЗавтракЗЗакуска3Салат витаминныйЗОвощи200.4 *

. . .

1З31ЗавтракЗЗакуска12Суп молочныйСМолоко500.3

1З31ЗавтракЗЗакуска13БастурмаГМясо300.5

. . .

1З31ЗавтракЗЗакуска32Кофе черныйНКофе100.1

1З31ЗавтракЗЗакуска33Кофе на молокеНКофе200.2

1З61ЗавтракЗЗакуска1Салат летнийЗОвощи200.3

1З61ЗавтракЗЗакуска2Салат мяснойЗМясо200.4

1З61ЗавтракЗЗакуска3Салат витаминныйЗОвощи200.4

1З61ЗавтракЗЗакуска4Салат рыбныйЗРыба200.4

1З61ЗавтракЗЗакуска5Паштет из рыбыЗРыба120.5

1З61ЗавтракЗЗакуска6Мясо с гарниромЗМясо250.3 *

. . .

Рис. 3.1. Иллюстрация декартова произведения

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

  • кодами трапез (Т) в таблицах Меню и Трапезы (Меню.Т = Трапезы.Т),
  • кодами видов блюд (В) в таблицах Меню и Вид_блюд (Меню.В = Вид_блюд.В),
  • номерами блюд (БЛ) в таблицах Меню и Блюда (Меню.БЛ = Блюда.БЛ).

Такой скорректированный запрос

SELECT Меню.*, Трапезы.*, Вид_блюд.*, Блюда.* FROM Меню, Трапезы, Вид_блюд, Блюда WHERE Меню.Т = Трапезы.Т AND Меню.В = Вид_блюд.В AND Меню.БЛ = Блюда.БЛ;

позволит получить эквисоединение таблиц Меню, Трапезы, Вид_блюд и Блюда:

ТВБЛТТрапезаВВидБЛБлюдоВОсноваВыход

Труд

1З31ЗавтракЗЗакуска3Салат витаминныйЗОвощи200.4

1З61ЗавтракЗЗакуска6Мясо с гарниромЗМясо250.3

1Г191ЗавтракГГорячее19Омлет с лукомГЯйца200.5

. . .

3Г163УжинГГорячее16ДраченаГЯйца180.4

3Н303УжинННапиток30КомпотНФрукты200.2

3Н313УжинННапиток31Молочный напитокНМолоко200.2

3.2.1 | Содержание | 3.2.3




Начало  Назад  Вперед