|
Модераторы: skyboy |
|
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Добрый день!
t.cat_gender ENUM('unisex', 'man', 'woman'); (t.cat_id, t.cat_gender) UNIQUE Запрос возвращает 1 строку если cat_text не джойнится по условию, и до 3 строк - когда есть что джойнить. Мне надо сделать так, чтоб запрос всегда возвращал 3 строки и cat_gender был указан: 123 text_OR_NULL 'unisex' 123 text_OR_NULL 'man' 123 text_OR_NULL 'woman' В общем, чтоб запрос вел себя так, будто к нему INNER JOIN-интся таблица с одним единственным полем cat_gender и тремя записями в нем: 'unisex', 'man', 'woman'. Но без этой таблицы (зачем нам лишние таблицы, если есть вариант без них). Так можно? |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 2 Всего: 386 |
Без временной таблицы - не знаю как сделать
https://www.db-fiddle.com/f/xteXTe18SVzgJjQz7u47wo/1 Это сообщение отредактировал(а) ksnk - 15.3.2019, 16:18 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Жаль... Так понимаю, Вы имели ввиду так:
https://www.db-fiddle.com/f/xteXTe18SVzgJjQz7u47wo/2 (INNER вместо LEFT и tmp.cat_gender вместо t.cat_gender) Помню делал что-то вида SELECT t.field, 123 AS val... - когда надо было подставить конкретные данные в выборку. Думал, может и с таблицами как-то так можно. |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 2 Всего: 386 |
Ну да. Хотя можно и без временной таблицы. SQL велик и в некоторых местах - могуч.... Правда накой такое чудо нужно?
https://www.db-fiddle.com/f/xteXTe18SVzgJjQz7u47wo/5 Это сообщение отредактировал(а) ksnk - 15.3.2019, 23:12 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
Akina |
|
||||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
Бред. Сервер не может вернуть данные, которых у него НЕТ. Если это - реальная задача, то в cat_text присутствуют все варианты его значения, и вместо формирования опорной таблицы на основе знания, какие есть варианты для ENUM, надо использовать
Формирование опорной таблицы на основании известного набора значений или на основании имеющихся границ - совершенно обычное дело. В рамках MySQL старых (5+) версий да, это приходилось делать извратным образом (вплоть до использования переменных), а в 8+ уже есть честные CTE. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 2 Всего: 386 |
С реальными задачами может случится много чего. Например, некоторые значения, которые ранее можно было вводить - теперь, в новые формы, вводить уже не нужно. Некоторых значений, которые нужно бы вводить, еще может не быть в базе (только что пришла директива из центра и никто еще не заполнил формы).Так что удобнее и более управляемо, в реальном случае, imho, отдельная таблица-словарь. Ну а самое главное возражение против "давайте все сделаем одним запросом" - это то, что этап выковыривания данных из базы накладывается на этап оформления формы ввода данных. по идее - это 2 разных действия и не нужно их смешивать в одном запросе... Хотя это чистая лирика, если неизвестно накой все это делается.... Вообще-то СТЕ не поможет избавится от 3-х селектов с юнитами, а просто вынесет их в более очевидное место -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Мне подходит. На таком варианте и остановился. Спасибо! Есть 2 пола и унисекс. В ближайшем будущем вряд ли появится что-то еще. Хороший вариант в копилочку. Но не в моем случае, т.к. таблица может быть пустой. Это сообщение отредактировал(а) maxipub - 18.3.2019, 14:24 |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
А как же none-sex? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
||||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 453 |
Ну по смыслу - это то, что не подходит ни мужчинам, ни женщинам... скажем, ботинки фирмы "Скороход", ежели кто помнит... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Akina, это идет как unisex.
|
|||
|
||||
dorcasmelda |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.12.2019 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |