|
Модераторы: skyboy |
|
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Здравствуйте!
Я привык к PHP, где NULL по сути синоним пустоты. А вот в MySQL, насколько знаю, NULL является более неопределенным значением. Посему хотел уточнить у экспертов, является ли корректной такая конструкция:
Где table.field - INT UNSIGNED AI, т.е. целочисленное > 0. Использовать планирую в LEFT JOIN, чтоб получать 1 там, где есть пересечения, и 0 там, где их не будет и мы получим NULL. Является ли корректной такая конструкция? Т.е. она всегда будет отдавать 0 при table.field = NULL? Заранее спасибо! |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 2 Всего: 386 |
Нет, не подойдет. В MySql есть специальный оператор IFNULL
Зависит,конечно, от места имения оператора... Это сообщение отредактировал(а) ksnk - 23.3.2018, 16:48 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
||||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 2 Всего: 386 |
Похоже, что подойдет, нужно пробовать и смотреть
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
ksnk, у меня и первый вариант "шел". Я просто помню (если не ошибаюсь) когда-то был у меня запрос, где сравнивался NULL, и он в разных ситуациях возвращал разный результат. Точно детали не помню, но запомнил четко что с NULL в MySQL нужно быть начеку.
|
|||
|
||||
Akina |
|
||||||||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
полностью эквивалентно простому
Только один вызов функции экономится.
Null в MySQL - это unknown value. Ну или по-русски "фиг знает". Соответственно
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||||
|
|||||||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
А как тут добавить произвольные значения 1,0 if-else? |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
maxipub, подробнее. ВСЮ задачу, плиз... а то очень трудно догадаться, когда и куда надо добавлять эти 1,0... да и вообще - это два значения через запятую или одно с десятичным разделителем запятая?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Akina, хочу использовать это в запросе вида:
Я не знаю каким термином правильно это назвать. t1.control - некая "избыточная" колонка, которая служит для уменьшения нагрузки на БД. Эти три джойна выполняются примерно за 0,05 сек. Но количество запросов к БД и характеристики железа такие, что 0,05 сек для данного запроса получается очень много. А дальнейшая выборка с условием t1.control - вообще ничего. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
Ну так
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Akina, TRUE / FALSE в данном случае будут корректно приводиться к 1 / 0 (t1.control INT unsigned)? Я проверил, работает. Но это корректный подход, так можно делать?
|
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
Это ДОКУМЕНТИРОВАНО.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
||||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
Есть понятие предварительного расчёта (предрасчёта). Есть понятие переопределённых данных. А вот отдельного термина для такого поля - увы, я не ведаю. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |