Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
01.04.2020, 12:53
|
|||
---|---|---|---|
Вычисляемое поле с объединением значений |
|||
#18+
Добрый день. Имеется три таблицы в БД - два справочника и какие-то операции по ним, например: Код: plaintext 1. 2. 3.
Теперь, чтобы отобразить все комбинации А и Б, по которым есть операции, можно использовать простой запрос: Код: sql 1.
Вопрос: можно ли как-то в этот запрос добавить вычисляемое поле FLAG, которое равно 0, если хотя бы одна строка в таблице C с данным сочетанием A_ID и B_ID имеет значение FLAG = 0, в противном случае оно равно 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 12:54
|
|||
---|---|---|---|
|
|||
Вычисляемое поле с объединением значений |
|||
#18+
MIN() Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 12:58
|
|||
---|---|---|---|
Вычисляемое поле с объединением значений |
|||
#18+
Dimitry Sibiryakov MIN() Код: sql 1.
Так? Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause) Invalid token ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 13:15
|
|||
---|---|---|---|
Вычисляемое поле с объединением значений |
|||
#18+
Получилось вот так, правильно? Код: sql 1. 2. 3. 4. 5.
Или можно это как-то проще сделать, без рекурсии, в один проход? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 13:18
|
|||
---|---|---|---|
|
|||
Вычисляемое поле с объединением значений |
|||
#18+
DISTINCT замени на group by 1, 2 и проверь. Ну и потом добавишь CASE или MINVALUE. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 13:40
|
|||
---|---|---|---|
|
|||
Вычисляемое поле с объединением значений |
|||
#18+
alekcvp, проверьте, если в таблице "c" вообще нет записей с комбинациями "a.id" и "b.id", то min() всё равно покажет 0? Мне кажется лучше жёсткая связка. Если в "с" нет записей с какими-то комбинациями, то их и не надо отображать. Хотя это как связаны между собой справочники "a" и "b". ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 13:47
|
|||
---|---|---|---|
Вычисляемое поле с объединением значений |
|||
#18+
KreatorXXI alekcvp, проверьте, если в таблице "c" вообще нет записей с комбинациями "a.id" и "b.id", то min() всё равно покажет 0? А такое вообще в принципе может быть, если a.id и b.id берутся из запроса по "c"? Гаджимурадов Рустам DISTINCT замени на group by 1, 2 и проверь. Ну и потом добавишь CASE или MINVALUE. Спасибо, получилось вот так: Код: sql 1. 2. 3. 4.
Но! Как только я пытаюсь добавить в запрос ещё одно поле: Код: sql 1.
то сразу получаю ошибку, о которой писал выше: "Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)". Что я не так делаю? Т.е. теоретически понятно, что ругается на то что это не аггрегат и в груп не входит, но как это исправить? В груп я его включить не могу, т.к. поле не уникальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 13:56
|
|||
---|---|---|---|
|
|||
Вычисляемое поле с объединением значений |
|||
#18+
alekcvp, а где у Вас из запроса по "с"? У Вас left join. Это означает вывести все строки из левой таблицы. А для правой проставить null'ы для отсутствующих. Или у мня ковид-19? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 14:00
|
|||
---|---|---|---|
|
|||
Вычисляемое поле с объединением значений |
|||
#18+
alekcvp Что я не так делаю? Т.е. теоретически понятно, что ругается на то что это не аггрегат и в груп не входит, но как это исправить? В груп я его включить не могу, т.к. поле не уникальное. Оно не уникальное для конкретной связки a.id и b.id? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 14:00
|
|||
---|---|---|---|
Вычисляемое поле с объединением значений |
|||
#18+
KreatorXXI alekcvp, а где у Вас из запроса по "с"? У Вас left join. Это означает вывести все строки из левой таблицы. А для правой проставить null'ы для отсутствующих. Или у мня ковид-19? Код: sql 1.
Ну так левая таблица здесь - это как раз "С", разве нет? Т.е. выводятся все строки из неё. А в ней у меня не может быть записей, для которых нет соответствующих A.ID и B.ID. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 14:02
|
|||
---|---|---|---|
Вычисляемое поле с объединением значений |
|||
#18+
KreatorXXI alekcvp Что я не так делаю? Т.е. теоретически понятно, что ругается на то что это не аггрегат и в груп не входит, но как это исправить? В груп я его включить не могу, т.к. поле не уникальное. Оно не уникальное для конкретной связки a.id и b.id? Хм... оно может быть одинаковое для разных a.id... для одного и того же a.id оно всегда одно и то же. А GROUP BY по многим полям не сильно тормозит запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 14:02
|
|||
---|---|---|---|
|
|||
Вычисляемое поле с объединением значений |
|||
#18+
alekcvp, да, согласен. Прошу прощения. Зачем тогда вообще здесь left? Вывести записи без ссылок на a и b? Такие есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 14:08
|
|||
---|---|---|---|
|
|||
Вычисляемое поле с объединением значений |
|||
#18+
alekcvp KreatorXXI пропущено... Оно не уникальное для конкретной связки a.id и b.id? Хм... оно может быть одинаковое для разных a.id... для одного и того же a.id оно всегда одно и то же. А GROUP BY по многим полям не сильно тормозит запрос? Значит проблем не должно быть. Group by отслеживает как-бы уникальность. Т.е. если у Вас третье поле уникальное для a.id, то не проблема. И тормозить не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 14:16
|
|||
---|---|---|---|
Вычисляемое поле с объединением значений |
|||
#18+
KreatorXXI alekcvp, да, согласен. Прошу прощения. Зачем тогда вообще здесь left? Вывести записи без ссылок на a и b? Такие есть? Думаете так будет лучше?.. Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&mobile=1&tid=1560396]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 269ms |
total: | 526ms |
0 / 0 |