select K.Ид,
K.ФИО,
T1.Тариф ТарифРасхода,
T2.Тариф ТарифПотерь
from (Клиенты K
left join Тарифы T1
on K.КодТарифаРасхода = T1.КодТарифа)
left join Тарифы T2
on K.КодТарифаПотерь = T2.КодТарифа
where K.Ид = 1981
Как с помощью SQL запроса сделать что-то наподобие таблицы с LookUp'ами.(Чисто наSQL)
Хотел отделить логику и реализацию. для этого написал классы имитирующие объекты хранимые в базе данных, с методами сохранения в базе. Классы обращаются к базе через SQL запросы. Поэтому мне нужен чистый SQL код для реализации следующего:
Таблица на основе 2 таблиц.
1)Клиенты
2)Тарифы
В клиентах есть два поля КодТарифаРасхода и КодТарифаПотерь. Тарифы берутся из таблицы потерь.
Если в базе Клиенты
один клиент с Ид=1981, ФИО="Максумов", КодТарифаРасхода="01", КодТарифаПотерь="02"
И
в базе тарифы 2 тарифа
1. КодТарифа="01", Тариф = 34 р.
2. КодТарифа="02", Тариф = 27 р.
Должно получится 1 запись:
Ид | ФИО | ТарифРасхода | ТарифПотерь|
1981 | Максумов | 34 р | 27 р. |
Буду рад если поможете.
Код:
Только не уверен, что в таком виде заработает на Accesse.
Цитата: Ora-cool
Например, так
Только не уверен, что в таком виде заработает на Accesse.
Код:
select K.Ид,
K.ФИО,
T1.Тариф ТарифРасхода,
T2.Тариф ТарифПотерь
from (Клиенты K
left join Тарифы T1
on K.КодТарифаРасхода = T1.КодТарифа)
left join Тарифы T2
on K.КодТарифаПотерь = T2.КодТарифа
where K.Ид = 1981
K.ФИО,
T1.Тариф ТарифРасхода,
T2.Тариф ТарифПотерь
from (Клиенты K
left join Тарифы T1
on K.КодТарифаРасхода = T1.КодТарифа)
left join Тарифы T2
on K.КодТарифаПотерь = T2.КодТарифа
where K.Ид = 1981
Только не уверен, что в таком виде заработает на Accesse.
Тут не обязательно выбирать по ключу(where K.Ид = 1981), я имел ввиду что записей с Ид=1981 не должно быть больше одного.
Распечатал дома попробую(Главное смысл). Результат сообщу. Спасибо
Спасибо способ предложенный "Ora cool"ом сработал.