|
|
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Ребят, я куда тупее Вас, поэтому и попросил помощи... не нужно стёб новичка делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:25 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag, 1) проверять count(fm) не в having 2) translate(str,'*1,','*') is null 3) ... ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:27 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
AmKad, не он, я к этому сам пришел, может и не правильная мысль, но без ошибок ничему и не научусь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:27 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag, если ты боишься sum(nvl2(p.fm,1,0)) поставь count(p.fm) (т.к. count не считает null по ты получишь кол-во не пустых имен). чем городить огород сначала склеивая потом парсить да еще с ограничениями что ... что-то у тебя быть не может (держим в уме) через год кто-то вобъет тестового чела с 1 символом и все пойдет не так как надо .... ну в общем делай как хо, как сделал бы я - я написал/предложил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:30 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
AmKad, Не приплетай меня к этому) Я ему показал "подсчитываем кол-во единичек в строке и вычитаем длину строки без учёта запятых", а он сделал "подсчитываем длину строки и из неё вычитаем длину строки без единичек и вычитаем длину строки без запятых". Мой вариант как раз вернёт те строки, где ничего, кроме единичек нет. Даже строку "," вернёт как null, что <> 0. А его вариант строку "1" вернёт как null, что <> 0, но она должна учитываться, т.к. состоит из единичек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:31 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
Vertrag не нужно стёб новичка делать... ну вот. Больше не буду писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:31 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
VertragРебят, я куда тупее Вас, поэтому и попросил помощи... не нужно стёб новичка делать...Тебе намекнули описать постановку твоей задачи, а ты вместо этого шлак выблевал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:31 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
DshedooAmKad, Не приплетай меня к этому) Я ему показал "подсчитываем кол-во единичек в строке и вычитаем длину строки без учёта запятых", а он сделал "подсчитываем длину строки и из неё вычитаем длину строки без единичек и вычитаем длину строки без запятых". Мой вариант как раз вернёт те строки, где ничего, кроме единичек нет. Даже строку "," вернёт как null, что <> 0. А его вариант строку "1" вернёт как null, что <> 0, но она должна учитываться, т.к. состоит из единичек.Не хочу вникать. Слишком сложно для меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:33 |
|
||
|
Помогите с выборкой
|
|||
|---|---|---|---|
|
#18+
MaximaXXL,AmKad,stax..,Dshedoo я попробовал sum(nvl2(p.fm,1,0)), очень полезно и то что нужно. Ребят, спасибо всем, кто отозвался, очень помогли. И спасибо что тыкали носом в ошибки, а то так бы ничего и не понял( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 12:36 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1885992]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
226ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 611ms |

| 0 / 0 |
