|
|
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Доброй день! Делаю выборку с использованием 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'), но здесь предусмотрено количество только для трех людей, прописывать так до бесконечности не разумно, поэтому прошу Вашей помощи... Заранее спасибо за помощь или подсказку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 10:13 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag, Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 10:23 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
AmKad, Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 10:37 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
AmKad, спасибо за совет, но забыл написать - делаю выборку и выстраиваю пересчет в таблицу, т.е. основное условие для всех одно и тоже, а в строки я добавляю условие, что в первую строку выводит количество тех событий где есть ФИО на всех, во вторую где нет, а в третью где и то и то, и т.д. с учетами других данных таблицы... т.е. прописать having не выйдет, потому как она изменит все основное условие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 10:41 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Dshedoo, Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 10:44 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
VertragAmKad, спасибо за совет, но забыл написать - делаю выборку и выстраиваю пересчет в таблицу, т.е. основное условие для всех одно и тоже, а в строки я добавляю условие, что в первую строку выводит количество тех событий где есть ФИО на всех, во вторую где нет, а в третью где и то и то, и т.д. с учетами других данных таблицы... т.е. прописать having не выйдет, потому как она изменит все основное условиеЕсли хочешь что-то до меня донести, сделай это так: как задавать вопросы по sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 10:45 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
[ВЫБОРКА] [КУРСОР] 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') [КОНЕЦ] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:00 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
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') [КОНЕЦ] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:01 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag, Прости, ничем не могу помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:09 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
AmKad, спасибо что зашел, прочитал и ответил) редко кто даже прочитает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:14 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag, Ты хочешь "(fm = '1' or fm = '1,1' or fm = '1,1,1')" это условие сделать "динамическим", так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:16 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
DshedooVertrag, Ты хочешь "(fm = '1' or fm = '1,1' or fm = '1,1,1')" это условие сделать "динамическим", так? Нет, думаю он не хочет включать мозг =) если он имеет sql для конкатенации почему не добавить в него поле sum(nvl2(p.fm,0,1)) cnt_fio_not_null и проверять как хочешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:35 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag, Хотя для твоей задачи будет правильнее добавить условие sum(nvl2(p.fm,1,0)) cnt_fio_not_null и проверять на больше 0 (если надо) это условие покажет сколько у тебя не пустых имен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:42 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
MaximaXXLsum(nvl2(p.fm,1,0)) cnt_fio_not_null и проверять на больше 0 (если надо) это условие покажет сколько у тебя не пустых имен.Гениально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 11:43 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, спасибо всем за помощь, нашел выход, пошел через вхождение строки в строку - length(c.rfm)-length(replace(c.rfm,'1',''))-length(replace(c.rfm,',',''))=0, если там будет хотя бы одна фамилия или имя, то оно уже не будет ноль, так как ФИО длиной в 1 символ просто нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:10 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertragдлиной в 1 символ просто нет интернетыСовременный китайский мастер миниатюрной пластики Ю Лин (1951 г.р) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:15 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
env, Словянского происхождения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:17 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
VertragMaximaXXL, спасибо всем за помощь, нашел выход, пошел через вхождение строки в строку - length(c.rfm)-length(replace(c.rfm,'1',''))-length(replace(c.rfm,',',''))=0, если там будет хотя бы одна фамилия или имя, то оно уже не будет ноль, так как ФИО длиной в 1 символ просто нет.Правильно. Вместо того, чтобы заюзать целую одну агрегатную ф-ию, склеим все в строку, обворачивая nvl-ом каждое значение, заложившись на особенность данных, потом будем изворачиваться поиском вхождений с применением length-ов, replace-ов и вычитаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:19 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertragenv, Словянского происхождения Дискриминация по национальному признаку! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:19 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag, length(replace(c.rfm,'1','')) length(null) = null 1 +/- null = null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:19 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
env, да и опять таки, в строку вписываются и фамилия и имя и отчество, в сумме они 1 символ не дадут никак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:19 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertragfm - поле с фамилией Vertragв строку вписываются и фамилия и имя и отчество Однако, за время пути, собака смогла подрасти... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:21 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Это я еще про недокументированность и недетерминированность wm_concat ничего не сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:23 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
DshedooVertrag, length(replace(c.rfm,'1','')) length(null) = null 1 +/- null = nullТак это ж ты ему извороты с length от replace показал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:25 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39448438&tid=1885992]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 534ms |

| 0 / 0 |
