Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выбор по FK но не более n 
:(
    Опции темы
koroplysov
Дата 19.5.2011, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Добрый день!
Есть 2 таблицы, они связаны по вторичному ключу. Например предприятия и их счета:

Поля таблицы A:
ID_A
Name_A

Поля таблицы B:
ID_B
ID_A_B
SCHET_B

Понятно, что у предприятия может быть много счетов. Вот такая проблема возникла: нужно выбрать список ВСЕХ имен предприятий и закрепить за каждым именем ОДИН счет(любой). Реальная проблема другая, но идея такая же. СУБД DB2 8.1. Чувствую что нужно смотреть в сторону left join (ведь счет может и отсутствовать), но fetch туда не прилепить, хотя . Прям в ступоре.
Поделитесь идеей!
PM MAIL   Вверх
Akina
Дата 19.5.2011, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(koroplysov @  19.5.2011,  09:07 Найти цитируемый пост)
Вот такая проблема возникла: нужно выбрать список ВСЕХ имен предприятий и закрепить за каждым именем ОДИН счет(любой).

Если это надо в одном запросе - то просто используешь аггрегатную функцию First/Last/Min/Max.
Если это надо "навсегда" - следует в структуру таблицы предприятий ввести поле-FK на первичный счёт.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
koroplysov
Дата 19.5.2011, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Можно найти счет с минимальным ID_B и указать его с именем предприятия, но как быть если у предприятия не окажется(а такое может быть) счетов?
PM MAIL   Вверх
Akina
Дата 19.5.2011, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(koroplysov @  19.5.2011,  09:55 Найти цитируемый пост)
как быть если у предприятия не окажется(а такое может быть) счетов? 

Построение бизнес-логики находится за рамками SQL-программирования.
Это ВАМ надо решить, что делать в таком случае. И потом уже воплощать принятое решение в SQL-коде.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
koroplysov
Дата 19.5.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 19.5.2011,  09:03)
Цитата(koroplysov @  19.5.2011,  09:55 Найти цитируемый пост)
как быть если у предприятия не окажется(а такое может быть) счетов? 

Построение бизнес-логики находится за рамками SQL-программирования.
Это ВАМ надо решить, что делать в таком случае. И потом уже воплощать принятое решение в SQL-коде.

Тут не вопрос о том, может быть счет или нет(это вообще пример), тут вопрос о том, что в таблице B может не оказаться записи соответствующей некоторой записи из таблицы A и вот тогда-то эта запись из таблицы A может не отобразиться. Перефразирую:  как быть если в таблице В не окажется(а такое может быть) записей соответствующих записям из А?

Добавлено через 3 минуты и 33 секунды
Вспомнил про свой подобный запрос годичной завности, но если смотреть исходя из данного примера то он(запрос) выбрал бы последний счет каждого предприятия, но опять же, если счета нет то и предприятие не отобразится.
PM MAIL   Вверх
Akina
Дата 19.5.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(koroplysov @  19.5.2011,  13:15 Найти цитируемый пост)
как быть если в таблице В не окажется(а такое может быть) записей соответствующих записям из А?

Если нужно вывести все записи некоторой таблицы вне зависимости от того, есть ли соответствующие ей записи в референсной таблице, следует использовать не inner join, а left/right join.
Само собой, в полях из референсной таблицы для такой записи будут Null...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1883 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.