|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.04.2010, 18:53 | #1 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
Выбор первого значения
Как в данном запросе выбрать первое значение из таблицы Devices, т.к. в ином случае получаем на каждую запись из таблицы Cust несколько записей из таблицы device.
Опция Distinct не подходит. SELECT Cust.CustomerID, Cust.LicNumber, Cust.FirstName, Cust.TownName, Cust.StreetName, Cust.HouseNumber, Cust.Apartment, Customers.Litera, Devices.Number, bypass_sheet.SheetDate, bypass_sheet_item.OldMeasure, bypass_sheet_item.Measure FROM Gas.dbo.bypass_sheet bypass_sheet, Gas.dbo.bypass_sheet_item bypass_sheet_item, Gas.dbo.Cust Cust, Gas.dbo.Customers Customers, Gas.dbo.Devices Devices WHERE Cust.CustomerID = Customers.CustomerID AND Customers.CustomerID = Devices.CustomerID AND bypass_sheet_item.CustomerID = Customers.CustomerID AND bypass_sheet.SheetID = bypass_sheet_item.SheetID AND ((bypass_sheet.SheetDate>={ts '2010-04-01 00:00:00'})) ORDER BY Cust.CustomerID |
05.04.2010, 21:10 | #2 | |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
Цитата:
В качестве примера: Код:
1) Использование MIN в запросе может оказаться не совсем корректным применительно к Вашей задаче; 2) Я так предполагаю, что кроме как в "Devices", так и в связанной таблице "bypass_sheet_item" на одного Customer'a тоже может быть несколько записей. |
|
06.04.2010, 11:36 | #3 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
судя по этому
Код:
Код:
|
06.04.2010, 18:14 | #4 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
Запрос от edgy частично решает проблему, т.к. значения из Devices.Number не являются критерием. Критерием можно считать значения Cust.CustomerID, они должны быть уникальны, в моем случае нужно выбрать первое совпадающее значение. Как я понял функция MIN() выбирает минимальное значение. Выражение MIN(Cust.CustomerID) выдает ошибку.
А если использовать функцию Count() = 1? Как ее адаптировать под предложенный пример? |
06.04.2010, 21:24 | #5 |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
Естественно, что решает не все проблемы.
Обратите внимание на пункт 2 моего предыдущего сообщения. Я, конечно, не телепат и вполне могу ошибаться, но почему-то мне кажется, что проблема может быть в этом. Таблица "bypass_sheet_item" может содержать несколько записей с одинаковым значением CustomerID? Если да, то Вам по сути просто нужно будет немного переделать приведенный запрос с учетом этого момента. |
07.04.2010, 12:21 | #6 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
В bypass_sheet_item действительно несколько записей с одинаковым значением CustomerID, но все эти значения функция MIN() не обрабатывает т.к. они равны друг другу.
Возможно я неправильно поставил вопрос, т.к. СУБД все равно какая последовательность строк и столбцов. Как отсеять все дублирующийся значения из Device.CustomerID? |
07.04.2010, 13:01 | #7 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
для начала нужно правильно поставить вопрос
потому что все решения что выше привели - исключительно из собственного понимания того что ТС хочет получить и понятие "первое значение из таблицы Devices" можно трактовать как угодно и потом разводить здесь бодягу на 100 постов ни о чем не можете словами описать, приведите пример исходных данных по таблицам и то что нужно в итоге получить |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выбор максимальноко значения с массива данных | sasha_prof | Microsoft Office Excel | 2 | 02.02.2010 15:29 |
выбор значения | Screame | Microsoft Office Excel | 2 | 01.11.2009 14:09 |
Неразрешимая задача?? - Выбор значения из ячейки | xamillion | Microsoft Office Excel | 9 | 03.12.2008 11:44 |
выбор значения | SveSve | Microsoft Office Excel | 2 | 16.04.2008 19:13 |
Выбор значения из массива по столбцу и строке | Almaas | Помощь студентам | 4 | 25.01.2008 14:56 |