powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / помогите советом по связи таблиц
6 сообщений из 6, страница 1 из 1
помогите советом по связи таблиц
    #36612533
Sniff-Kadabra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здравствуйте!
не могу толком ничего придумать.
к примеру, есть следующая конструкция
три таблицы, первая в зависимости от значения одного из полей ссылается на данные либо второй, либо третьей таблицы. как лучше всего это реализовать?

самый простой вариант - хранить указание на конкретную таблицу, как двойной ключ(в двух полях, либо блобом структуру типа (char*,int) или (int,int) - имя(номер) таблицы и номер строки в ней, считывать в одном запросе и в зависимости от результата формировать новый, записывая в поле from уже явно вторую или третью таблицы

возможно ли это делать в одном sql запросе, т.е., внутри запроса определять таблицу для поля from?
спасибо
...
Рейтинг: 0 / 0
помогите советом по связи таблиц
    #36612924
ЯИра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос формируется в клиенте, вот и формируй строку запроса как надо в зависимости от того, что в нужном поле первой таблицы. А во второй и третьей таблице строки связывай с записями первой по id соответствующей записи первой таблицы.
...
Рейтинг: 0 / 0
помогите советом по связи таблиц
    #36612939
ЯИра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запрос типа такой

select tt1.*, tt2.sfield from t1 tt1, t2 tt2
where tt1.ufield in (..,..,..)
and tt1.id=tt2.id
union
select tt1.*, tt3.ssfield from t1 tt1, t3 tt3
where tt1.ufield in (..,..,..)
and tt1.id=tt3.id;
...
Рейтинг: 0 / 0
помогите советом по связи таблиц
    #36612981
Sniff-Kadabra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЯИра, мб, я не совсем вас понял)
формировать запрос ЯИракак надо в зависимости от того, что в нужном поле первой таблицы - значит формировать один запрос на основе другого запроса, так? т.е, от обработки результатов запроса не уйти все равно.

у меня вопрос, собственно, можно ли этого избежать, определяя нужную таблицу в основном запросе и запрашивая данные из неё.
...
Рейтинг: 0 / 0
помогите советом по связи таблиц
    #36612984
Sniff-Kadabra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
аа, я на ваш первый ответ отвечал. ага, union по всем возможным вариантам, да, понял, как вариант
...
Рейтинг: 0 / 0
помогите советом по связи таблиц
    #36613524
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще можно так:
Код: plaintext
1.
2.
3.
4.
select t1.pk, t1.f1, t1.switch, (case t1.switch when  1  then t2.textfield else t3.textfield end) as textfield
from t1
left join t2 on t1.switched_id=t2.pk and t1.switch= 1 
left join t3 on t1.switched_id=t3.pk and t1.switch= 2 
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / помогите советом по связи таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]