Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2011, 05:56   #1
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
Печаль Запрос выводит 7 одинаковых записей. Почему?

Здравствуйте.
Код:
procedure TFormViewData.dbgrd1CellClick(Column: TColumn);
var
   id:String;
begin
   id:=DM1.FIBDS.Fields[0].AsString;
   DM1.FIBDS.Close;
   DM1.FIBDS.SQLs.SelectSQL.Text:='select * FROM '+
   ' ND_UR_PARAM , ND_GEO_PARAM , ND_TECHNIKAL_PARAM , ND_STAT_PARAM , ND_ARENDA_PARAM'+
   ' Where '+
   ' ND_UR_PARAM.ID='           + QuotedStr(id)+' and '+
   ' ND_TECHNIKAL_PARAM.ID='+ QuotedStr(id)+' and '+
   ' ND_STAT_PARAM.ID='       +  QuotedStr(id)+' and '+
   ' ND_GEO_PARAM.ID='         +  QuotedStr(id);
   DM1.FIBDS.Open;
end;
По клику на ячейке DBGrid'a в переменную id записывает id записи которая соответствовала ячейке DBGrida после чего выбираются все поля из нескольких таблиц у которых соответствующий id только вот запрос выводит 7 идентичных записей(((
Lokos вне форума Ответить с цитированием
Старый 14.04.2011, 06:21   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

легкое, но неверное логически решение - использовать distinct
Код:
select distinct * from dual;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 14.04.2011, 06:23   #3
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от Sparkman Посмотреть сообщение
легкое, но неверное логически решение - использовать distinct
Код:
select distinct * from dual;
distinct - что это такое если не секрет?
добавил distinct результат тот же

Последний раз редактировалось Lokos; 14.04.2011 в 06:25.
Lokos вне форума Ответить с цитированием
Старый 14.04.2011, 06:28   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

distinct - это параметр, при наличии которого повторяющиеся записи не будут отображаться в запросе.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 14.04.2011, 06:30   #5
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от Sparkman Посмотреть сообщение
distinct - это параметр, при наличии которого повторяющиеся записи не будут отображаться в запросе.
но они повторяются))
Lokos вне форума Ответить с цитированием
Старый 14.04.2011, 06:56   #6
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Lokos Посмотреть сообщение
но они повторяются))
Цитата:
только вот запрос выводит 7 идентичных записей(((
они точно полностью идентичные?
выберите только те поля по которым идет повторение.
Код:
   DM1.FIBDS.SQLs.SelectSQL.Text:='select * FROM '+
   ' ND_UR_PARAM , ND_GEO_PARAM , ND_TECHNIKAL_PARAM , ND_STAT_PARAM , ND_ARENDA_PARAM'+
   ' Where '+
   ' ND_UR_PARAM.ID='           + QuotedStr(id)+' and '+
   ' ND_TECHNIKAL_PARAM.ID=ND_UR_PARAM.ID and '+
   ' ND_STAT_PARAM.ID=ND_UR_PARAM.ID and '+
   ' ND_GEO_PARAM.ID=ND_UR_PARAM.ID';
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 14.04.2011, 07:11   #7
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

точно 7 абсолютно одинаковых записей)) поскольку больше записей нет с повторяющимся id можно сделать вывод что это одна и та же запись))
Lokos вне форума Ответить с цитированием
Старый 14.04.2011, 07:27   #8
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

group by попробуйте
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 14.04.2011, 07:41   #9
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Цитата:
Сообщение от Sparkman Посмотреть сообщение
group by попробуйте
а можно пример запроса
Lokos вне форума Ответить с цитированием
Старый 14.04.2011, 08:27   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как у вас составлен запрос, так и выводит. Наведите резкость на таблицу ND_ARENDA_PARAM, во WHERE вообще никак не упоминается
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование одинаковых свойств разных записей. Alex Cones Общие вопросы Delphi 6 30.01.2011 15:04
Почему выводит строку 2 раза?!?!?! Dasharnb777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 17.11.2010 11:06
Delphi7 - Почему Edit1.Text не выводит в цикле ? vldnik Помощь студентам 8 28.03.2010 05:02
Параметр TTAble определяющий кол-во одинаковых записей в таблице Таня84 БД в Delphi 4 09.02.2007 14:51