powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Конкатенация с NULL
48 сообщений из 48, показаны все 2 страниц
Конкатенация с NULL
    #38494349
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени.

Товарищи подскажите, как объединить значения если в одном из случаем есть нулл в таком запросе
Код: sql
1.
CONCAT(MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(tex.time,'%H:%i'),null)) ,'|', MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(off.time,'%H:%i'),null))) as '05.11'


ПС я знаю что если в одном есть нулл то будет нулл...
Но все же ?
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38494370
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM COALESCE()
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38494385
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот фрагмент может быть применен к пустому наборы данных?
Если нет, то достаточно заменить null-ы на '' (пустую строку).
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38494438
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

как ?
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38494450
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFmiksoft,

как ?руками.
Код: sql
1.
CONCAT(MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(tex.time,'%H:%i'),'')) ,'|', MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(off.time,'%H:%i'),''))) as '05.11'
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38495015
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Я Вас вероятно первый раз не понял.

Этот фрагмент относится так же к пустому набору данных

сейчас данные при объединении выглядят так 00:00 | 01:00, либо null.
хотя в бд первое условие может быть пустым т.е. |02:00 или наоборот 02:12 |
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38495063
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFЭтот фрагмент относится так же к пустому набору данныхНу тогда придется функцию применить
Код: sql
1.
CONCAT(IFNULL(MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(tex.time,'%H:%i'),'')),'') ,'|', IFNULL(MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(off.time,'%H:%i'),'')),'')) as '05.11'

скобки только проверьте, мог напутать...
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38497703
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,
А так он мне просто " | "
при выполнении дает вместо нулл..
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38497709
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFmiksoft,
А так он мне просто " | "
при выполнении дает вместо нулл..А разве не это требовалось? Я понял так, что нужно, чтобы один из NULL-ов не приводил к NULL все выражение в целом.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38497725
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftbboyRALFmiksoft,
А так он мне просто " | "
при выполнении дает вместо нулл..А разве не это требовалось? Я понял так, что нужно, чтобы один из NULL-ов не приводил к NULL все выражение в целом.
Не совсем ))) у меня есть часы работы за дату с 09:00 до 18:00
У меня запрос так и выводит 09:00 | 18:00, но есть случаи когда ПО не записывает 09:00 либо 18:00.
Мне нужно такие выводить как" 9:00| " , либо " | 18:00 "
вот.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38497731
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFесть случаи когда ПО не записывает 09:00 либо 18:00.
Мне нужно такие выводить как" 9:00| " , либо " | 18:00 "Тогда мой вариант должен работать.
Просто "|" он будет выводить только когда обе стороны NULL, но что делать в таком случае - Вы не написали.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38497740
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftbboyRALFесть случаи когда ПО не записывает 09:00 либо 18:00.
Мне нужно такие выводить как" 9:00| " , либо " | 18:00 "Тогда мой вариант должен работать.
Просто "|" он будет выводить только когда обе стороны NULL, но что делать в таком случае - Вы не написали.

если вообще ничего нету, тогда нулл.
Но Ваш вариант. он делает тоже самое что и нулл получается, потому что если одно значение из сторон нулл, то в итоге я нулл и получаю. А я же хочу чтобы он выводил 9:00 | NULL, чтобы понять за какие даты ПО не записало инф
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38497742
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFвыводить как" 9:00| "bboyRALFхочу чтобы он выводил 9:00 | NULLВы уж определитесь, пожалуйста.
Для второго варианта будет так:
Код: sql
1.
CONCAT(IFNULL(MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(tex.time,'%H:%i'),'NULL')),'NULL') ,'|', IFNULL(MAX(IF(tex.date = '05.11.2013',TIME_FORMAT(off.time,'%H:%i'),'NULL')),'NULL')) as '05.11'
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38498957
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

что-то совсем не получается, ifnull это подобие case ?
Может вся проблема в конкат ?
при объединении 0 и 1 будет всегда 0.
Тогда как мне их объеденить?
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38498978
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы друг друга не понимаем.
Приведите пример исходных данных с разными вариациями NULL/не-NULL и покажите конкретный результат, который нужно получить.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38498983
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFпри объединении 0 и 1 будет всегда 0.Нет, будет '01'.
http://sqlfiddle.com/#!2/d41d8/27028
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38498984
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFifnull это подобие case ?Нет, это COALESCE для ОДНОГО значения.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38498986
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftМы друг друга не понимаем.
Приведите пример исходных данных с разными вариациями NULL/не-NULL и покажите конкретный результат, который нужно получить.

Иванова Иван 08:46|14:03
Петров Петр NULL <- вот здесь должно быть 07:30 | nul

сейчас такой запрос
Код: sql
1.
CONCAT(IFNULL(MIN(IF(tex.date = '01.11.2013',TIME_FORMAT(tex.time,'%H:%i'),NULL)),'nul') ,'|', IFNULL(MAX(IF(tex.date = '01.11.2013',TIME_FORMAT(off.time,'%H:%i'),NULL)),'nul')) as '01.11',
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499001
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFПетров Петр NULL <- вот здесь должно быть 07:30 | nulоткуда тут возмется 07:30, если в исходных данных их нет?
И разбейте ваш пример на поля. Сейчас невозможно понять, где начинается одно поле и начинается другое.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499009
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinabboyRALFifnull это подобие case ?Нет, это COALESCE для ОДНОГО значения.Точнее, для двух.

Записать можно и через CASE, но получится заметно длиннее.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499018
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Код: plaintext
1.
Иванова Иван	 08:46|14:03
Петров Петр	 NULL  <- вот здесь должно быть 07:30 | nul 

так?
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499027
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFmiksoft,

Код: plaintext
1.
Иванова Иван	 08:46|14:03
Петров Петр	 NULL  <- вот здесь должно быть 07:30 | nul 
так?Не так.
Отдельно покажите пример исходных данных и отдельно результат. Я не понимаю ваши стрелки и т.п.
И желательно воспользоваться тегом CSV (кнопка Table).
Примерно так:
FIO TIME_START TIME_ENDИванова Иван 08:4614:03Петров Петр ??????
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499047
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

исходные данные
08.11.2013 \ 07:58\Ivanov \ Приветствие
08.11.2013 \ 11:46\Ivanov \ Блокировка
08.11.2013 \ 12:14\Ivanov \ Разблокировка
08.11.2013 \ 17:00\Ivanov \ Завершение работы

name 01.ноя 05.нояИванов Александр 07:48|16:47 07:50|17:01Кулик Анастасия 09:09|19:26 09:06|18:30Петренко Виктория 08:59|18:00 08:45|18:13Иванов Иван 08:46|14:03 08:35|18:00Петренко Петр NULL 07:30|17:00Ухов Сергей 08:52|20:51 NULL
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499052
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftТочнее, для двух.Формально да. Но крайне редко.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499075
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinamiksoftТочнее, для двух.Формально да. Но крайне редко.Что значит "крайне редко" ? У IFNULL всегда ровно два параметра. И IFNULL(A,B) эквивалентно COALESCE(A,B).
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499098
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я ж не против. Я о том, что в подавляющем большинстве случаев использования IFNULL()второй параметр - литерал.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499294
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так мне писать запрос через COALESCE ???
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38499339
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFТак мне писать запрос через COALESCE ???
IFNULL - это формально просто обёртка для COALESCE в случае ровно двух аргументов.
Думай сам. Я в своё время выбрал не-использование IFNULL, и другим советую того же.
Всё, что можно сделать с помощью IFNULL, можно сделать и с помощью COALESCE. Но не наоборот.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38501826
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinabboyRALFТак мне писать запрос через COALESCE ???
IFNULL - это формально просто обёртка для COALESCE в случае ровно двух аргументов.
Думай сам. Я в своё время выбрал не-использование IFNULL, и другим советую того же.
Всё, что можно сделать с помощью IFNULL, можно сделать и с помощью COALESCE. Но не наоборот.

В общем понятно, что ничего не понятно...
Буду писать приложение, которое будет сцеплять строки...
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575227
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем. Возвращаюсь все к тому же товарищи.
Проблема здесь из-за того что данные должны быть равны, поэтому вывод значений идет только при равестве( если есть пустой, то конкатенация не происходит)
Код: sql
1.
CONCAT(MIN(IF(tex.date = '03.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null))  ,'|',  MAX(IF(tex.date = '03.02.2014',TIME_FORMAT(off.time,'%H:%i'),null))) as '03.02',

Умы человечества, подскажите...
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575247
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFВ общем. Возвращаюсь все к тому же товарищи.
Проблема здесь из-за того что данные должны быть равны, поэтому вывод значений идет только при равестве( если есть пустой, то конкатенация не происходит)
Код: sql
1.
CONCAT(MIN(IF(tex.date = '03.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null))  ,'|',  MAX(IF(tex.date = '03.02.2014',TIME_FORMAT(off.time,'%H:%i'),null))) as '03.02',

Умы человечества, подскажите... как объединять даже если данные не равны
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575617
VFl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALF,

соединение строки и значения NULL всегда дает NULL.

непонятно, зачем у вас вот это

IF(tex.date = '03.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null)

так вы будете всегда получать NULL на всем выражении, если tex.date не '03.02.2014'. Смысл?

если вам нужны данные только за 03.02.2014, можно просто поставить это условие в WHERE.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575878
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFl,
Нет не только за 3 число, такой же запрос на каждые будни февраля месяца, т.е. 4-5...28 число, а как быть если в tex.time есть данные, а в off.time нету ?
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575893
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFlсоединение строки и значения NULL всегда дает NULL.Не всегда. http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575898
VFl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFкак быть если в tex.time есть данные, а в off.time нету ?

IFNULL(TIME_FORMAT(tex.time,'%H:%i'), 'NULL' ), если вы хотите получить результат в виде NULL|02:00 или 02:12|NULL

Тогда NULL будет просто записан строкой.

или сделать IFNULL(TIME_FORMAT(tex.time,'%H:%i'), '' ) если вы хотите получить результат в виде |02:00 или 02:12|
или, например, IFNULL(TIME_FORMAT(tex.time,'%H:%i'), 'пусто' )

Тогда в результате будет пусто|02:00 и 02:12|пусто

Опс, возникнут проблемы с MAX() функциями, если IFNULL() будет подменять время на текст. Я не знаю весь SELECT, который у вас, но если есть группировка, и MAX() сильно нужен, то должно работать и так:

Код: sql
1.
2.
3.
CONCAT(IFNULL(TIME_FORMAT(MAX(tex.time),'%H:%i'), 'NULL'),'|',IFNULL(TIME_FORMAT(MAX(tex.time),'%H:%i'), 'NULL'))
...
WHERE tex.date = '03.02.2014'
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575900
VFl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверно, так точнее:
Код: sql
1.
2.
3.
CONCAT(IFNULL(TIME_FORMAT(MIN(tex.time),'%H:%i'), 'NULL'),'|',IFNULL(TIME_FORMAT(MAX(off.time),'%H:%i'), 'NULL'))
...
WHERE tex.date = '03.02.2014'




miksoftVFlсоединение строки и значения NULL всегда дает NULL.Не всегда. http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat-ws CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument.

Cоединение строки и значения NULL всегда дает NULL. Это стандарт SQL. NULL в SQL понимается как "не знаю, что там". Если вы к любому значению прибавите "не знаю что", то и получится "не знаю что", т.е. NULL. Функция CONCAT_WS() игнорирует/перепрыгивает значения NULL, а не соединяет их со строкой.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38575908
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFlНаверно, так точнее:
Код: sql
1.
2.
3.
CONCAT(IFNULL(TIME_FORMAT(MIN(tex.time),'%H:%i'), 'NULL'),'|',IFNULL(TIME_FORMAT(MAX(off.time),'%H:%i'), 'NULL'))
...
WHERE tex.date = '03.02.2014'





miksoftпропущено...
Не всегда. пропущено...


Cоединение строки и значения NULL всегда дает NULL. Это стандарт SQL. NULL в SQL понимается как "не знаю, что там". Если вы к любому значению прибавите "не знаю что", то и получится "не знаю что", т.е. NULL. Функция CONCAT_WS() игнорирует/перепрыгивает значения NULL, а не соединяет их со строкой.Кэп, как раз вас нам и не хватало
Я бы всё-таки постарался выяснить, что именно надо ТСу, что он хотел сказать вот этим:
bboyRALFданные должны быть равны, поэтому вывод значений идет только при равестве( если есть пустой, то конкатенация не происходит)Может, ему как раз и надо "перепрыгивание нуллов".
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577414
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, без исходных данных, текста запроса, результата выполнения этого же запроса на этих же данных, и внятного объяснения, почему результат следует считать неправильным, ситуация тупиковая
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577415
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и пожалуйста, не постите скриншоты, только текстом
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577508
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT  user.`name`, 
CONCAT(MIN(IF(tex.date = '03.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null))  ,'|',  MAX(IF(tex.date = '03.02.2014',TIME_FORMAT(off.time,'%H:%i'),null))) as '03.02',
CONCAT(MIN(IF(tex.date = '04.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null))  ,'|',  MAX(IF(tex.date = '04.02.2014',TIME_FORMAT(off.time,'%H:%i'),null))) as '04.02',
CONCAT(MIN(IF(tex.date = '05.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null))  ,'|',  MAX(IF(tex.date = '05.02.2014',TIME_FORMAT(off.time,'%H:%i'),null))) as '05.02',
CONCAT(MIN(IF(tex.date = '06.02.2014',TIME_FORMAT(tex.time,'%H:%i'),null))  ,'|',  MAX(IF(tex.date = '06.02.2014',TIME_FORMAT(off.time,'%H:%i'),null))) as '06.02' 


from tex,user,(select tex.date,tex.userid,tex.comp,tex.time from tex,user where status like '%Завершение%' or (status like '%Блокировка%' and tex.userid=user.id) as off
where tex.`userid`=user.`id` and off.userid=user.id and tex.date=off.date
and (tex.`status` like '%Разблокировка%' or tex.`status` like '%Приветствие%' and tex.time > '04:59')
 and user.name ='Иванова Маша'
group by user.`name` 


набор данных таблица tex
date time comp status03.02.2014 07:09KR Приветствие04.02.2014 07:19KR Приветствие04.02.2014 15:50KR Завершение работы05.02.2014 14:16KR Блокировка (это примерные данные)

из-за таких данных я получу в норм виде только за 4.02, а за 3.02 и за 5.02 я получу просто null

в итоге запрос выдает
name03.0204.0205.02Иванова Машаnull07:19|15:50null, хотя! 3.02 и 5.02 есть зафиксированная информация и мне нужно чтобы он выводил так
name03.0204.0205.02Иванова Маша07:09|null07:19|15:50null|14:16
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577514
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALF, замените в своих конкатах null на 'null'. В принципе это будет код из последнего поста VFI.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577515
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. А что должно выдаваться при отсутствии каких бы то ни было данных за день?
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577516
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще, что мешает сделать, не N колонок, а 2N - старт+стоп? И туда выбирать уже труЪ нуллы, если таковые появятся? Зачем это пропихивание нуллов в строки?
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577537
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirИ вообще, что мешает сделать, не N колонок, а 2N - старт+стоп? И туда выбирать уже труЪ нуллы, если таковые появятся? Зачем это пропихивание нуллов в строки? не совсем Вас понял..

По поводу если будут отсутствовать данные за день, то просто null
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577640
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALFне совсем Вас понялВот так нельзя сделать? И не морочить голову с конкатами.
name03.02-start03.02-stop04.02-start04.02-stop05.02-start0.02-stopИванова Маша07:09null07:1915:50null14:16
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577643
bboyRALF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

Да я тоже за такой вид изначально был ) Но руководство понимает лучше меня. )
поэтому без конкатенации ни как..
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38577652
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALF, ну тогда смотри выше, например, последний пост VFI, только туда ещё надо условие добавить, чтобы получилось что-то вроде
Код: sql
1.
if(min(time) is null and max(time) is null, null, весь_тот_конкат)

в общем, то ещё мракобесие получится. Зато "красиво", ага.
...
Рейтинг: 0 / 0
Конкатенация с NULL
    #38578163
VFl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bboyRALF,

вместо
Код: sql
1.
2.
3.
4.
from tex,user,(select tex.date,tex.userid,tex.comp,tex.time from tex,user where status like '%Завершение%' or (status like '%Блокировка%' and tex.userid=user.id) as off
where tex.`userid`=user.`id` and off.userid=user.id and tex.date=off.date
and (tex.`status` like '%Разблокировка%' or tex.`status` like '%Приветствие%' and tex.time > '04:59')
 and user.name ='Иванова Маша'


лучше наверно как то так:
Код: sql
1.
2.
3.
4.
5.
6.
from user LEFT JOIN (tex, tex as off)
ON (tex.`userid`=user.`id` and off.userid=user.id and tex.date=off.date
and (off.`status` like '%Завершение%' or tex.`status` like '%Блокировка%') 
and (tex.`status` like '%Разблокировка%' or tex.`status` like '%Приветствие%') 
and tex.time > '04:59')
WHERE user.name ='Иванова Маша'



потому что если данных по Маше Ивановой для "Завершения" или "Блокировки" по какой то дате нет, то у вас оно и "Разблокировку" с "Приветствием" не покажет. Думается так.

Синтакс надо проверить, писал без проверки
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Конкатенация с NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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