powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с выборкой
25 сообщений из 34, страница 1 из 2
Помогите с выборкой
    #39448427
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброй день!

Делаю выборку с использованием wm_concat(nvl(p.fm,'1')) fm, fm - поле с фамилией, допустим у нас есть 4(или более) события на которые записаны люди со своими исходными данными, если у нас данных о Ф.И.О. нет, то мы оставляем поля пустыми, в итоге оно выводит примерно так:

событие 1 - Иванов,1,Сидоров

событие 2 - 1,1,Иванов

событие 3 - 1,1,1

событие 4 - Иванов,Петров,Сидоров


как из всех событий выбрать только те "события", в которых все значения равны "1", т.е. у нас нет Ф.И.О. абсолютно ни на кого из людей, которые будут на "событии".

мой вариант такой : and (fm = '1' or fm = '1,1' or fm = '1,1,1'), но здесь предусмотрено количество только для трех людей, прописывать так до бесконечности не разумно, поэтому прошу Вашей помощи...

Заранее спасибо за помощь или подсказку.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448438
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertrag,
Код: plsql
1.
2.
group by event_id
having count(fm) = 0
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448450
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
with q as (select '1' as a from dual union all
select '1,1' from dual union all
select '1,1,1,1,1,1' from dual union all
select '1,1,1,1,1,1,2,1' from dual union all
select '5,4,3,6,7,8,9' from dual)

select * from q where regexp_count (a,'[1]') - length(replace(a,',','')) = 0
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448456
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad, спасибо за совет, но забыл написать - делаю выборку и выстраиваю пересчет в таблицу, т.е. основное условие для всех одно и тоже, а в строки я добавляю условие, что в первую строку выводит количество тех событий где есть ФИО на всех, во вторую где нет, а в третью где и то и то, и т.д. с учетами других данных таблицы... т.е. прописать having не выйдет, потому как она изменит все основное условие
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448459
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo,

Спасибо.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448460
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VertragAmKad, спасибо за совет, но забыл написать - делаю выборку и выстраиваю пересчет в таблицу, т.е. основное условие для всех одно и тоже, а в строки я добавляю условие, что в первую строку выводит количество тех событий где есть ФИО на всех, во вторую где нет, а в третью где и то и то, и т.д. с учетами других данных таблицы... т.е. прописать having не выйдет, потому как она изменит все основное условиеЕсли хочешь что-то до меня донести, сделай это так: как задавать вопросы по sql
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448474
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[ВЫБОРКА]
[КУРСОР]
select * from (select '1' grup,
wm_concat(nvl(p.fm,'1')) rfm,
o.o, o.d, o.r, o.df, o.l, o.e, o.dz
from baza.sobitie$o_pers p, baza.sobitie o
where
o.id = p.sobitie_id
and o.o like '13%'
and p.z in ('11','21')
and (p.v is null or p.vd >= &pob)
group by o.ID, o.o, o.d, o.r, o.df, o.l, o.e, o.dz
union all
select '2' grup,
wm_concat(nvl(p.fm,'1')) fm,
o.o, o.d, o.r, o.df, o.l, o.e, o.dz
from orion.o_iors$o_pers p, orion.o_iors o
where
o.id = p.sobitie_id
and o.o like '13%'
and (p.z in ('11','21') or p.z is null)
and (p.v is null or p.vd >= &pob)
and o.r=12
group by o.ID, o.o, o.d, o.r, o.df, o.l, o.e, o.dz) c
[КОНЕЦ]

[РАЗДЕЛ 1]
[УСЛОВИЕ ГРАФ]

where

[1] c.l='19'
[2] c.grup='1'
[3] (fm = '1' or fm = '1,1' or fm = '1,1,1')

[КОНЕЦ]
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448480
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,
[ВЫБОРКА]
[КУРСОР]
select * from (select '1' grup,
wm_concat(nvl(p.fm,'1')) rfm,
o.o, o.d, o.r, o.df, o.l, o.e, o.dz
from baza.sobitie$o_pers p, baza.sobitie o
where
o.id = p.sobitie_id
and o.o like '13%'
and p.z in ('11','21')
and (p.v is null or p.vd >= &pob)
group by o.ID, o.o, o.d, o.r, o.df, o.l, o.e, o.dz
union all
select '2' grup,
wm_concat(nvl(p.fm,'1')) fm,
o.o, o.d, o.r, o.df, o.l, o.e, o.dz
from orion.o_iors$o_pers p, orion.o_iors o
where
o.id = p.sobitie_id
and o.o like '13%'
and (p.z in ('11','21') or p.z is null)
and (p.v is null or p.vd >= &pob)
and o.r=12
group by o.ID, o.o, o.d, o.r, o.df, o.l, o.e, o.dz) c
[КОНЕЦ]

[РАЗДЕЛ 1]
[УСЛОВИЕ ГРАФ]

where

[1] c.l='19'
[2] c.grup='1'
[3] (fm = '1' or fm = '1,1' or fm = '1,1,1')

[КОНЕЦ]
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448501
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertrag,

Прости, ничем не могу помочь.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448511
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad, спасибо что зашел, прочитал и ответил) редко кто даже прочитает
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448514
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertrag,

Ты хочешь "(fm = '1' or fm = '1,1' or fm = '1,1,1')" это условие сделать "динамическим", так?
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448539
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooVertrag,

Ты хочешь "(fm = '1' or fm = '1,1' or fm = '1,1,1')" это условие сделать "динамическим", так?

Нет, думаю он не хочет включать мозг =)

если он имеет sql для конкатенации почему не добавить в него поле sum(nvl2(p.fm,0,1)) cnt_fio_not_null и проверять как хочешь
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448552
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertrag,

Хотя для твоей задачи будет правильнее добавить условие sum(nvl2(p.fm,1,0)) cnt_fio_not_null и проверять на больше 0 (если надо)
это условие покажет сколько у тебя не пустых имен.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448558
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLsum(nvl2(p.fm,1,0)) cnt_fio_not_null и проверять на больше 0 (если надо)
это условие покажет сколько у тебя не пустых имен.Гениально.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448593
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,
спасибо всем за помощь, нашел выход, пошел через вхождение строки в строку - length(c.rfm)-length(replace(c.rfm,'1',''))-length(replace(c.rfm,',',''))=0, если там будет хотя бы одна фамилия или имя, то оно уже не будет ноль, так как ФИО длиной в 1 символ просто нет.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448599
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertragдлиной в 1 символ просто нет
интернетыСовременный китайский мастер миниатюрной пластики Ю Лин (1951 г.р)
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448604
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,
Словянского происхождения
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448607
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VertragMaximaXXL,
спасибо всем за помощь, нашел выход, пошел через вхождение строки в строку - length(c.rfm)-length(replace(c.rfm,'1',''))-length(replace(c.rfm,',',''))=0, если там будет хотя бы одна фамилия или имя, то оно уже не будет ноль, так как ФИО длиной в 1 символ просто нет.Правильно. Вместо того, чтобы заюзать целую одну агрегатную ф-ию, склеим все в строку, обворачивая nvl-ом каждое значение, заложившись на особенность данных, потом будем изворачиваться поиском вхождений с применением length-ов, replace-ов и вычитаний.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448608
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertragenv,
Словянского происхождения

Дискриминация по национальному признаку!
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448609
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertrag,

length(replace(c.rfm,'1',''))

length(null) = null
1 +/- null = null
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448610
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, да и опять таки, в строку вписываются и фамилия и имя и отчество, в сумме они 1 символ не дадут никак
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448613
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vertragfm - поле с фамилией
Vertragв строку вписываются и фамилия и имя и отчество

Однако, за время пути, собака смогла подрасти...
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448616
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я еще про недокументированность и недетерминированность wm_concat ничего не сказал.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448619
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooVertrag,

length(replace(c.rfm,'1',''))

length(null) = null
1 +/- null = nullТак это ж ты ему извороты с length от replace показал.
...
Рейтинг: 0 / 0
Помогите с выборкой
    #39448620
Vertrag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, я куда тупее Вас, поэтому и попросил помощи... не нужно стёб новичка делать...
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с выборкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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