|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Добавил SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0) and (Datr<=CTOD('01.01.1961') AND Pol=('ж')) or (Datr<=CTOD('01.01.1956') AND Pol=('м')) но данные выходят такое же количество как и без добавленного ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 06:21 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
В скобки надо брать Код: sql 1.
И разберись сначала со скобками в исходном условии ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 07:16 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
С датами можно работать, как складывая, так и вычитая, при этом если прибявляем цифры, то формат понимает их как дни. Если от текущей даты (системная функция DATE()) отнять дату дня рождения, то получаем количество прожитых дней. При делении этих дней на 365.25, мы получаем количество полных прожитых лет и в остатке, прожитых дней. Если в задаче стоит выборка по полным годам, то все отбрасывается после запятой командой INT() SELECT + FROM Tabl WHERE pol = 'М' AND INT((DATE()-Datr)/365.25) >= 60 INTO CURSOR REpot_M && для мужчин SELECT + FROM Tabl WHERE pol = 'Ж' AND INT((DATE()-Datr)/365.25) >= 55 INTO CURSOR REpot_F && для женщин Если нужно выбрать по диапазону, а на не текущую дату, то вместо системной функции DATE(), можно воспользоваться функцикй BETWEN() dTekDate = {} && Можно здесь прописать и фиксированную дату SELECT + FROM Tabl WHERE pol = 'М' AND INT((BETEEN(dTekDate,DATE()-5,DATE()+5)-Datr)/365.25) >= 60 INTO CURSOR REpot_M && для мужчин SELECT + FROM Tabl WHERE pol = 'Ж' AND INT((BETEEN(dTekDate,DATE()-5,DATE()+5)-Datr)/365.25) >= 55 INTO CURSOR REpot_F && для женщин ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 10:31 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Да правильно вы написали про даты рождения мне сначала нужно это чтобы получилось в командной строке и лучше без id... и курсоров, таблица должна выводится такаеже без переименования столбцов, чтобы уже после можно было проверить в программе результат ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 10:53 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Выяснилась что сортировка должна происходить по дате поступления, если муж на дату поступления уже есть 60 лет и женщине есть 55 лет то тогда нужно чтобы показывались нужные лица Datp - Дата поступления Datr - Дата рождения ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 12:02 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Извиняюсь за не полный вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 12:14 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
dmr55Выяснилась что сортировка должна происходить по дате поступления, если муж на дату поступления уже есть 60 лет и женщине есть 55 лет то тогда нужно чтобы показывались нужные лица Datp - Дата поступления Datr - Дата рождения ну так замени date() на Datp ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 12:19 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
так, сначала в sql пробую SELECT * FROM kartwib WHERE ((Datr <= Datp - 60 * 365.25 and Pol = 'м') or (Datr <= Datp - 55 * 365.25 and Pol = 'ж')) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2016, 12:57 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
авторDatr <= Datp - 60 * 365.25 and Pol = 'м' Перевожу: Мужчины с датой рождения меньшей чем (дата поступления минус 60лет) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2016, 08:14 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Сорри. Увидел изменения в постановке. Тогда правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2016, 08:16 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Я протестировал в sql запросе получается выбирается все как , буду пробовать в коде ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2016, 08:47 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
ДОБАВИЛ В КОД SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT.AND.((Datr <= Datp - 60 * 365.25 or Pol = 'м') or (Datr <= Datp - 55 * 365.25 or Pol = 'ж'))).AND.SRDOOP>0) Но в одном пункте вылезло на одно число больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 16:41 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
На одно число больше чем где? Что за число вообще там вылазит? После селекта таблица получается, а не число. Если речь что количество записей не совпало, опять же с чем не совпало? Вобщем берешь оба результата и сравниваешь, находишь запись которая есть только в одной из выборок и дальше разбираться с ней. Тут 19485011 я вроде по русски писал: приводи пример исходных данных и будем разбирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 16:50 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Исходник весь представить не могу Сочетание в фильтре показывает либо как будто и не фильтровал муж старше 60 и жен старше 55 либо показывает 0, с разными перестановками скобок SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0) and ((Datr <= Datp - 60 * 365.25 and Pol = 'м') or (Datr <= Datp - 55 * 365.25 and Pol = 'ж')) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 11:20 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
для начала сделай так Код: sql 1. 2. 3. 4.
посмотри глазками и найди хотя бы одну неправильную запись и напиши ее сюда, персональных данных не надо, достаточно значения полей Datr, Datp, Pol Есть еще такой момент, для select этот фильтр не применяется, т.е. если ты после сделаешь sefect * from ... то выберется все что есть в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 13:41 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Есть еще момент с collate, т.е. в зависимости от установок может быть 'м' != 'М' для проверки Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 13:47 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
первом примере получается 0 данных, а во втором что-то получается но выходит отдельная таблица но не совсем что ожидалось, а куда потерялся изначальный код (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 17:38 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
dmr55а куда потерялся изначальный код (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0) Убрал за ненадобностью. Это отладка, если считаешь что в этой части нет проблем то, то ее можно убрать. Где данные что все плохо? вроде по-русски написал Dima Tпосмотри глазками и найди хотя бы одну неправильную запись и напиши ее сюда, персональных данных не надо, достаточно значения полей Datr, Datp, Pol ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 19:37 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
В SET FILTER TO Datr <= Datp - 60 * 365.25 and Pol != 'м' and Pol != 'ж' brow Появляется копия полной таблицы, при быстром просмотре даже не вижу женщин 1960годами ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 05:18 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Такая форма должна выходить а выходит ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 05:19 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
dmr55Такая форма должна выходить а выходит С тобой как в старом анекдоте Василий Иванович с Петькой летят на самолете: ВИ: Петька, приборы! П: Двести! ВИ: Что двести?! П: А что приборы? Отлаживают программы по частям, а не сразу на итого смотрят. brow это просмотр записей которые попадут в отчет. Оно тебе показало что подпадает под установленный фильтр. Хотя польза от твоих картин есть, я уже забыл что у тебя FPD, а там большие и маленькие буквы это разные буквы, т.е. "м" это не "М". Попробуй так Код: sql 1.
Если не поможет, то ищи КОНКРЕТНЫЕ записи в исходной таблице которые должны попадать, но не попали, или наоборот, не должны, но попали в отчет. И пиши сюда: Datr = 10.12.1955, Datp = 15.07.2016, Pol = "Ж" ... И еще такой момент: у тебя в датах (когда brow делаешь) сколько цифр года видно? Если две то запросто может быть что 15.07.16 это 15.07. 19 16 Сделай так и посмотри Код: sql 1. 2.
первая строка - это показывать код 4-мя цифрами ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 07:52 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Когда делаю brow в появившейся таблице видны в столбце Datr вот такого формата 26.11.1932 Когда вставляю и просматриваю код SET FILTER TO (DATW>=MINDAT.AND.DATW<=MAXDAT).AND.SRDOOP>0) and ((Datr <= Datp - 60 * 365.25 and inlist(Pol, 'м', 'М')) or (Datr <= Datp - 55 * 365.25 and inlist(Pol, 'ж', 'Ж'))) set century on brow Выходят все без изменения, не отбираются ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 09:21 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
да точно м и М разное, что то SQL запрос не получается с обоими м и М, ж и Ж ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 09:34 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
dmr55Выходят все без изменения, не отбираются Ты читать умеешь? Третий раз прошу: Dima TЕсли не поможет, то ищи КОНКРЕТНЫЕ записи в исходной таблице которые должны попадать, но не попали, или наоборот, не должны, но попали в отчет. И пиши сюда: Datr = 10.12.1955, Datp = 15.07.2016, Pol = "Ж" ... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 09:34 |
|
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6
|
|||
---|---|---|---|
#18+
Спасибо что указал на маленькие и большие м и ж, проверил выборку в sql на заданную дату Получилось 167 SELECT * FROM kartwib WHERE ((Datr <= Datp - 60 * 365.25 and Pol = 'м') or (Datr <= Datp - 55 * 365.25 and Pol = 'ж')) Получилось 184 SELECT * FROM kartwib WHERE ((Datr <= Datp - 60 * 365.25 and Pol = 'м') or (Datr <= Datp - 60 * 365.25 and Pol = 'М') or (Datr <= Datp - 55 * 365.25 and Pol = 'ж') or (Datr <= Datp - 55 * 365.25 and Pol = 'Ж')) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 10:27 |
|
|
start [/forum/search_topic.php?author=KPEMATOP&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 436ms |
total: | 616ms |
0 / 0 |