powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вопрос
30 сообщений из 30, показаны все 2 страниц
вопрос
    #36043104
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пож, какой запрос написать, чтобы вытащить записи у кого есть только code=4020 и 7015p для каждого человека?
...
Рейтинг: 0 / 0
вопрос
    #36043152
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT toid,name
FROM vop
WHERE INLIST(code ,'4020' ,'7015p')
GROUP BY toid,name
HAVING COUNT(*) > 1
...
Рейтинг: 0 / 0
вопрос
    #36043162
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Select * ;
   from c:\vop ;
   where inlist( code, "4020", "7015p")
...
Рейтинг: 0 / 0
вопрос
    #36043250
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PeisovSELECT toid,name
FROM vop
WHERE INLIST(code ,'4020' ,'7015p')
GROUP BY toid,name
HAVING COUNT(*) > 1

в итоге пустой файл получается. Почему?
...
Рейтинг: 0 / 0
вопрос
    #36043298
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72, SET ANSI OFF требуется
...
Рейтинг: 0 / 0
вопрос
    #36043328
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72PeisovSELECT toid,name
FROM vop
WHERE INLIST(code ,'4020' ,'7015p')
GROUP BY toid,name
HAVING COUNT(*) > 1

в итоге пустой файл получается. Почему?

1. Какая версия фокса? У меня 9.

2. А вариант с WHERE INLIST(code ,'4020 ' ,'7015p ') что даст?
...
Рейтинг: 0 / 0
вопрос
    #36043329
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGMMangust72, SET ANSI OFF требуется
Если б я понимала что это, я не задавала вообще вопросов здесь....
...
Рейтинг: 0 / 0
вопрос
    #36043336
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
9 фокс
...
Рейтинг: 0 / 0
вопрос
    #36043353
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72, если вы выполняете запрос в "ручном" режиме, просто введите предварительно эту команду (set ansi off). Потом, при желании, разберетесь... Первый ответный пост уже содержит решение Вашей проблемы
...
Рейтинг: 0 / 0
вопрос
    #36043385
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GermanGMMangust72, если вы выполняете запрос в "ручном" режиме, просто введите предварительно эту команду (set ansi off). Потом, при желании, разберетесь... Первый ответный пост уже содержит решение Вашей проблемы

ввела, но ничего не изменилось.
...
Рейтинг: 0 / 0
вопрос
    #36043390
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanGMMangust72, SET ANSI OFF требуется

Это зачем?
...
Рейтинг: 0 / 0
вопрос
    #36043400
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72GermanGMMangust72, если вы выполняете запрос в "ручном" режиме, просто введите предварительно эту команду (set ansi off). Потом, при желании, разберетесь... Первый ответный пост уже содержит решение Вашей проблемы

ввела, но ничего не изменилось.

Вы второй выриант where попробовали?

Запрос провряется именно на той таблице, которую Вы выложили или на другой?
...
Рейтинг: 0 / 0
вопрос
    #36043433
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И к этой таблице пробовала не помогает.
...
Рейтинг: 0 / 0
вопрос
    #36043442
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А такое что-нибудь возвращает?

SELECT name
FROM vop
WHERE INLIST(code ,'4020' ,'7015p')
GROUP BY name
HAVING COUNT(*) > 1
...
Рейтинг: 0 / 0
вопрос
    #36043463
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, вот так работает.
А можно это сделать в фоксе 9 со всеми полями при операции group by? В 6 версии это возможно было сделать...
...
Рейтинг: 0 / 0
вопрос
    #36043485
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72Да, вот так работает.
Станно. вроде как для одного и того же человека код toid должен быть одним и тем же. И группировка должна работать номмально.

Во всяком случае в выложенной табличке это так


А можно это сделать в фоксе 9 со всеми полями при операции group by? В 6 версии это возможно было сделать...
Не понял...
...
Рейтинг: 0 / 0
вопрос
    #36043546
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном запросе выводиться только одно поле, а мне нужно например поле с ФИО и еще другие.
...
Рейтинг: 0 / 0
вопрос
    #36043566
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72В данном запросе выводиться только одно поле, а мне нужно например поле с ФИО и еще другие.

Ха! Что просили - то и получили!

А если надо другое - то пишите, что надо в результате то получить?
...
Рейтинг: 0 / 0
вопрос
    #36043687
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужны поля fromid, toid, name,stage_a,spid,stage_b при условии, если code=4020 и 7015p для каждого человека
...
Рейтинг: 0 / 0
вопрос
    #36043697
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нет желание править запрос, то
поможет установка set enginebehavior 70
...
Рейтинг: 0 / 0
вопрос
    #36043768
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72,


Код: plaintext
1.
2.
3.
SELECT a.*;
from vop as a;
left join vop as b on b.name = a.name AND a.code <> b.code;
where INLIST(a.code ,'4020' ,'7015p') .and. INLIST(b.code ,'4020' ,'7015p')
...
Рейтинг: 0 / 0
вопрос
    #36043779
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимоесли нет желание править запрос, то
поможет установка set enginebehavior 70
Спасибо это помогло, но не фильтруется запрос по code, вылезли все записи
...
Рейтинг: 0 / 0
вопрос
    #36043865
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PeisovMangust72,


Код: plaintext
1.
2.
3.
SELECT a.*;
from vop as a;
left join vop as b on b.name = a.name AND a.code <> b.code;
where INLIST(a.code ,'4020' ,'7015p') .and. INLIST(b.code ,'4020' ,'7015p')


Супер, все вышло! А зачем при объединении таблиц нужно "AND a.code <> b.code"?
...
Рейтинг: 0 / 0
вопрос
    #36043890
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72А зачем при объединении таблиц нужно "AND a.code <> b.code"?

Что бы не обединять строку саму с собой.

Поробуйте убрать и посмотрите результат!
...
Рейтинг: 0 / 0
вопрос
    #36044010
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PeisovMangust72А зачем при объединении таблиц нужно "AND a.code <> b.code"?

Что бы не обединять строку саму с собой.

Поробуйте убрать и посмотрите результат!
Но тогда надо бы лучше "AND a.code > b.code"
Иначе (одна запись сама с собой всегда совпадет) на выходе две записи.
С уважением, Алексей.
...
Рейтинг: 0 / 0
вопрос
    #36044211
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KPeisovMangust72А зачем при объединении таблиц нужно "AND a.code <> b.code"?

Что бы не обединять строку саму с собой.

Поробуйте убрать и посмотрите результат!
Но тогда надо бы лучше "AND a.code > b.code"
Иначе (одна запись сама с собой всегда совпадет) на выходе две записи.
С уважением, Алексей.

А согласный!!!

Но по уму - запрос вообще левый. Ибо если на одного человека будет 3 разных кода - получится полная фигня.

По идее - надо сперва собирать имена через группировку и count, а потом к имени линковать записи таблицы.
...
Рейтинг: 0 / 0
вопрос
    #36045147
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как более правильно написать данное условие?
cast(icase((sp_v.cnt_spid>=5 AND sp_v.cnt_spid<=9 AND tree.stage<=2, 15,sp_v.cnt_spid=>10 AND tree.stage<=2,25) or (sp_v.cnt_spid>=5 AND sp_v.cnt_spid<=9 AND tree.stage=>3,25,sp_v.cnt_spid=>10 AND tree.stage=>3,35,0)) as I ) as aaa
...
Рейтинг: 0 / 0
вопрос
    #36045235
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предыдущее сообщение можно удалить, изменила условие.

, cast(icase((sp_v.cnt_spid>=5 AND sp_v.cnt_spid<=9 AND tree.stage#3 OR tree.stage#4, 15,sp_v.cnt_spid=>10 AND tree.stage#3 OR tree.stage#4,25) or (sp_v.cnt_spid>=5 AND sp_v.cnt_spid<=9 AND tree.stage=3 OR tree.stage=4,25,sp_v.cnt_spid=>10 AND tree.stage=3 OR tree.stage=4,35,0)) as I ) as aaa;
...
Рейтинг: 0 / 0
вопрос
    #36045556
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mangust72Как более правильно написать данное условие?
cast(icase((sp_v.cnt_spid>=5 AND sp_v.cnt_spid<=9 AND tree.stage<=2, 15,sp_v.cnt_spid=>10 AND tree.stage<=2,25) or (sp_v.cnt_spid>=5 AND sp_v.cnt_spid<=9 AND tree.stage=>3,25,sp_v.cnt_spid=>10 AND tree.stage=>3,35,0)) as I ) as aaa

Поубивал бы за такие вопросы!!!

Ну почему не написать, что именно надо сделать. Ибо копать код и понимать, что автор хотел сказать - никакого желания нет!
...
Рейтинг: 0 / 0
вопрос
    #36045702
Mangust72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не думала, что мой вопрос будет трудно доступный, извиняюсь.
Сама решила задачу, спасибо.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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