powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с запросом!
19 сообщений из 19, страница 1 из 1
Помогите пожалуйста с запросом!
    #35571855
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем!

Я пишу следующий запрос:

SELECT personan2.nvrach,personan2.otdel,personan2.uzi, count(*) as nCount;
FROM personan2,otbor,person2;
WHERE personan2.datap >= (nachalo);
AND personan2.datap =< (konec);
and person2.id = personan2.idchel;
and otbor.names = personan2.nvrach;
group by personan2.uzivrach,personan2.uzi;
order by personan2.uzivrach,personan2.uzi;
iNTO TABLE uzi_otd_vib.dbf


в таблице otbor - это у меня курсор, в котором я отбираю фамилии из большого списка по которым я создаю отчет. и мне надо скомпоновать по фамилиям, каждый что и сколько сделал.
Вот вроде все и выбирается, но есть странная вещь:
если я беру две фамилии: Алексеев А.А. и Алексеева Н.И. то почему то считает не верно. У них одинаковый есть параметр: допустим дом. Дак он не пишет, что дом у каждой фамилии по одному, а пишет что у Алексеевой - 2 а тому вообще ничего не пишет. Зато если их вместе не формировать -то считает верно. Что интересно тут за накладка не подскажите пожалуйста?


Заранее спасибо.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35571873
dima_18Здравствуйте всем!

Я пишу следующий запрос:

SELECT personan2.nvrach,personan2.otdel,personan2.uzi, count(*) as nCount;
FROM personan2,otbor,person2;
WHERE personan2.datap >= (nachalo);
AND personan2.datap =< (konec);
and person2.id = personan2.idchel;
and otbor.names = personan2.nvrach;
group by personan2.uzivrach,personan2.uzi;
order by personan2.uzivrach,personan2.uzi;
iNTO TABLE uzi_otd_vib.dbf


в таблице otbor - это у меня курсор, в котором я отбираю фамилии из большого списка по которым я создаю отчет. и мне надо скомпоновать по фамилиям, каждый что и сколько сделал.
Вот вроде все и выбирается, но есть странная вещь:
если я беру две фамилии: Алексеев А.А. и Алексеева Н.И. то почему то считает не верно. У них одинаковый есть параметр: допустим дом. Дак он не пишет, что дом у каждой фамилии по одному, а пишет что у Алексеевой - 2 а тому вообще ничего не пишет. Зато если их вместе не формировать -то считает верно. Что интересно тут за накладка не подскажите пожалуйста?


Заранее спасибо.
Рекомендация:
Используйте строгое сравнение ( == ) вместо "простого" (=) при сравнении строк... Узнаете много интересного...
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35571888
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ, Станислав С...кий!

К сожалению - опять ничего не получилось!
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35571911
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое главное даже такой прикол:

вот запрос:


SELECT personan2.uzivrach,personan2.otdel,personan2.uzi, count(*) as nCount;
FROM personan2,person2;
WHERE personan2.datap >= (nachalo);
AND personan2.datap =< (konec);
and person2.id = personan2.idchel;
group by personan2.uzivrach,personan2.uzi;
order by personan2.uzivrach,personan2.uzi;
iNTO TABLE uzi_otd_vr.dbf

он отрабатывает нормально. Что я добавил:

and otbor.names = personan2.nvrach;
т.е. формирую отчет по выбранным фамилиям, которые отбираю в курсор - и тут такой глюк. Не понимаю и сильно расстраиваюсь, пока заметил прикол вот с этими двумя похожими фамилиями если по отдельности их - то каждая фамилия считается нормально. Или взять хотя бы одну фамилию в паре с другими то тоже нормально. Подскажите пожалуйста в чем дело?
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35571980
dima_18 Что я добавил:

and otbor.names = personan2.nvrach;
т.е. формирую отчет по выбранным фамилиям, которые отбираю в курсор - и тут такой глюк. Не понимаю и сильно расстраиваюсь, пока заметил прикол вот с этими двумя похожими фамилиями если по отдельности их - то каждая фамилия считается нормально. Или взять хотя бы одну фамилию в паре с другими то тоже нормально. Подскажите пожалуйста в чем дело?
Вы ставили здесь
dima_18 Что я добавил:

and otbor.names = personan2.nvrach;

вместо = знак == ? Имхо, дело здесь в сравнении строк:
Visual FoxPro 9.0 Language Reference

SET ANSI Command

Specifies whether to pad a shorter string with spaces when making a SQL string comparison or binary expression with zero (0) bytes when making a binary expression comparison in SQL commands using the equal sign operator (=).

Note:
In the Visual FoxPro OLE DB Provider, you cannot query the value of ANSI using the SET command though SET ANSI is supported.


SET ANSI ON | OFF

Parameters
ON
Pads the shorter string or binary expression with spaces or zero (0) bytes needed, respectively, to make it equal to the length of the longer string or expression. When SET ANSI is set to ON, the two strings or expressions are compared character for character for their entire lengths.

OFF
Specifies that the shorter string not be padded with spaces or binary expression not be padded with zero (0) bytes. (Default) When SET ANSI is set to OFF, the two strings are compared character for character until the end of the shorter string is reached.

Remarks
SET ANSI has no effect on the double equal sign (==) operator. When you use the == operator, the shorter string or binary expression is always padded with spaces or zero (0) bytes, respectively, for the comparison. For more information, see Relational Operators.

SET ANSI is scoped to the current data session.

SET ANSI and the Query Designer Visual FoxPro builds a SELECT - SQL command in the Query Designer when you create a query. When creating Join and Filter conditions, if you choose the Equal or Exactly Like options, the = or == operator is included in the generated SELECT. The SET ANSI setting can affect the results of queries you create and perform in the Query Designer.

String Order In SQL commands, the left-to-right order of the two strings in a comparison is irrelevant — switching a string from one side of the = or == operator to the other doesn't affect the result of the comparison.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572018
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо, Станислав С...кий ! И снова не удача

И снова ничего не получилось - я уж и установку set ansi on - включил насильно еще раз. И у меня стоит == вместо =. Все равно не то. Если вы посмотрите запрос то у них все поля одинаковые, кроме
personan2.idchel.
Но как я думаю все равно как -то должно разойтись - непонимаю.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572048
dima_18Большое спасибо, Станислав С...кий ! И снова не удача

И снова ничего не получилось - я уж и установку set ansi on - включил насильно еще раз. И у меня стоит == вместо =. Все равно не то. Если вы посмотрите запрос то у них все поля одинаковые, кроме
personan2.idchel.
Но как я думаю все равно как -то должно разойтись - непонимаю.
Выложите пример данных, которые участвуют у Вас в запросе... Хотя бы для "проблемных" людей... попробуем разобраться...
И еще, ФИО у Вас в одном поле или это несколько полей?
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572089
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо Станислав С...кий!

Быть может у Вас есть аська - и более договоримся что выслать. Мне бы это очень понравилось -может я какую глупость делаю. Жду ответа от Вас.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572162
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо Станислав С...кий!

Быть может у Вас есть аська - и более договоримся что выслать. Мне бы это очень понравилось -может я какую глупость делаю. Жду ответа от Вас.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572224
dima_18Огромное спасибо Станислав С...кий!

Быть может у Вас есть аська - и более договоримся что выслать. Мне бы это очень понравилось -может я какую глупость делаю. Жду ответа от Вас.
Нет, "Аськи" нет :-( А данные (до 100 Kb) можно приложить, например в виде архивного файла, к сообщению...
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572248
Станислав С...кий А данные (до 100 Kb) можно приложить, например в виде архивного файла, к сообщению...
Как правило, для понимания проблемы больше и не надо... Но если Вы считаете, что, для понимания проблемы, объем данных должен быть бОльшим, то мое "мыло": станислав1971 на мэйле ру...
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572280
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем я подготовил для отправки и сделал в виде таблицы, а не курсора таблицу otbor.
Я думаю все есть данные в запросе первые два параметра:WHERE personan2.datap >= (nachalo);
AND personan2.datap =< (konec);
nachalo и konec можно убрать - т.к. это я ввожу сам.
А так тут все данные есть - посмотрите пожалуйста, Станислав С...кий и другие - жду ответа как весточки.
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572434
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь еще раз Станислав С...кий!

Ну как все я прикрепил? Хватает этих данных?
Что -нибудь у Вас выходит?
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572468
dima_18Вообщем я подготовил для отправки и сделал в виде таблицы, а не курсора таблицу otbor.
Я думаю все есть данные в запросе первые два параметра:WHERE personan2.datap >= (nachalo);
AND personan2.datap =< (konec);
nachalo и konec можно убрать - т.к. это я ввожу сам.
А так тут все данные есть - посмотрите пожалуйста, Станислав С...кий и другие - жду ответа как весточки.
Хорошо бы еще сообщить версию Фокса, так как от этого зависят особенности SQL-движка...
Например, в 9-м Фоксе в GROUP BY должны участвовать все поля, кроме вычисляемого, а в 6-м Фоксе такого ограничения нет. И запросы, проходившие "на ура" в 6-м Фоксе приходится оптимизировать под 9-ю версию :-(...
И задание, пожалйуста, поконкретнее. Покажите ( в виде таблицы), что должно получиться...
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572487
dima_18Извиняюсь еще раз Станислав С...кий!

Ну как все я прикрепил? Хватает этих данных?
Что -нибудь у Вас выходит?
Ну, если немного "поколодовать", то все решаемо... А так, не хватало файла personan.fpt :-)
А выходить - выходит... Пишу на 9-м Фоксе... И Вашей проблемы не наблюдаю :-)
Только надо задание поконкретнее... А реализацию - подправим...
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572603
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спсасибо большое, Станислав С...кий !

Пишу я на 6 фокспро. Что касается - данный проблемы - то я совсем не понимаю - а почему у ме ня то так выходит. Может я не подключаю какой нибудь: set...
например :
set ansi....
Напишите, пожалуйста - как Вы проверяли это запрос. Спасибо
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572627
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот прикрепляю, что я хочу!

видеть - как видите у Алексеева пропала еще одна запись а вместо этого она у Алексеевой
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572664
dima_18Спсасибо большое, Станислав С...кий !

Пишу я на 6 фокспро. Что касается - данный проблемы - то я совсем не понимаю - а почему у ме ня то так выходит. Может я не подключаю какой нибудь: set...
например :
set ansi....
Напишите, пожалуйста - как Вы проверяли это запрос. Спасибо
Как я уже говорил, в 9-м Фоксе надо писать все поля, кроме вычисляемого, в GROUP BY.
Вот мой запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT personan.nvrach, personan.otdel, personan.uzi, count(*) as nCount;
FROM personan,otbor,person;
WHERE person.id = personan.idchel;
and otbor.names = personan.nvrach; 
group by personan.nvrach,personan.otdel, personan.uzi;
order by personan.nvrach,personan.uzi;
iNTO cursor uzi_otd_vib

получаем результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
 nvrach,             otdel,                     uzi,                                                nCount
Алексеев В В     Кардиологическое    БРЮШНОЙ СТЕНКИ                                 1
Алексеев В В     Детское                  МЯГКИХ ТКАНЕЙ                                     1
Алексеева Н И   Кардиологическое    БРЮШНОЙ СТЕНКИ                                  1
Алексеева Н И   Кардиологическое    МОЛОЧНЫХ ЖЕЛЕЗ                                 1
Безина Г Н         Хирургическое        БРЮШНОЙ СТЕНКИ                                  1
Установка SET ANSI у меня OFF :-)
...
Рейтинг: 0 / 0
Помогите пожалуйста с запросом!
    #35572740
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УРА. Все получилось у меня. Спасибо. Быть может я не прав и в надо было в group добавить:
personan.otdel
Наверное из за этого.
Еще раз огромное Вам спасибо!!!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с запросом!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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