![]() |
|
Модераторы: skyboy |
![]()
|
|
| koroplysov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Добрый день!
Есть 2 таблицы, они связаны по вторичному ключу. Например предприятия и их счета: Поля таблицы A: ID_A Name_A Поля таблицы B: ID_B ID_A_B SCHET_B Понятно, что у предприятия может быть много счетов. Вот такая проблема возникла: нужно выбрать список ВСЕХ имен предприятий и закрепить за каждым именем ОДИН счет(любой). Реальная проблема другая, но идея такая же. СУБД DB2 8.1. Чувствую что нужно смотреть в сторону left join (ведь счет может и отсутствовать), но fetch туда не прилепить, хотя . Прям в ступоре. Поделитесь идеей! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Если это надо в одном запросе - то просто используешь аггрегатную функцию First/Last/Min/Max. Если это надо "навсегда" - следует в структуру таблицы предприятий ввести поле-FK на первичный счёт. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| koroplysov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Можно найти счет с минимальным ID_B и указать его с именем предприятия, но как быть если у предприятия не окажется(а такое может быть) счетов?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Построение бизнес-логики находится за рамками SQL-программирования. Это ВАМ надо решить, что делать в таком случае. И потом уже воплощать принятое решение в SQL-коде. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| koroplysov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Тут не вопрос о том, может быть счет или нет(это вообще пример), тут вопрос о том, что в таблице B может не оказаться записи соответствующей некоторой записи из таблицы A и вот тогда-то эта запись из таблицы A может не отобразиться. Перефразирую: как быть если в таблице В не окажется(а такое может быть) записей соответствующих записям из А? Добавлено через 3 минуты и 33 секунды Вспомнил про свой подобный запрос годичной завности, но если смотреть исходя из данного примера то он(запрос) выбрал бы последний счет каждого предприятия, но опять же, если счета нет то и предприятие не отобразится. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Если нужно вывести все записи некоторой таблицы вне зависимости от того, есть ли соответствующие ей записи в референсной таблице, следует использовать не inner join, а left/right join. Само собой, в полях из референсной таблицы для такой записи будут Null... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |