|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
Добрый день. Имеется три таблицы в БД - два справочника и какие-то операции по ним, например: Код: plaintext 1. 2. 3.
Теперь, чтобы отобразить все комбинации А и Б, по которым есть операции, можно использовать простой запрос: Код: sql 1.
Вопрос: можно ли как-то в этот запрос добавить вычисляемое поле FLAG, которое равно 0, если хотя бы одна строка в таблице C с данным сочетанием A_ID и B_ID имеет значение FLAG = 0, в противном случае оно равно 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 12:53 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
MIN() Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 12:54 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#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, 12:58 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
Получилось вот так, правильно? Код: sql 1. 2. 3. 4. 5.
Или можно это как-то проще сделать, без рекурсии, в один проход? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 13:15 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
DISTINCT замени на group by 1, 2 и проверь. Ну и потом добавишь CASE или MINVALUE. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 13:18 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
alekcvp, проверьте, если в таблице "c" вообще нет записей с комбинациями "a.id" и "b.id", то min() всё равно покажет 0? Мне кажется лучше жёсткая связка. Если в "с" нет записей с какими-то комбинациями, то их и не надо отображать. Хотя это как связаны между собой справочники "a" и "b". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 13:40 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#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:47 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
alekcvp, а где у Вас из запроса по "с"? У Вас left join. Это означает вывести все строки из левой таблицы. А для правой проставить null'ы для отсутствующих. Или у мня ковид-19? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 13:56 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#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:00 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#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:02 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
alekcvp KreatorXXI пропущено... Оно не уникальное для конкретной связки a.id и b.id? Хм... оно может быть одинаковое для разных a.id... для одного и того же a.id оно всегда одно и то же. А GROUP BY по многим полям не сильно тормозит запрос? Значит проблем не должно быть. Group by отслеживает как-бы уникальность. Т.е. если у Вас третье поле уникальное для a.id, то не проблема. И тормозить не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 14:08 |
|
Вычисляемое поле с объединением значений
|
|||
---|---|---|---|
#18+
KreatorXXI alekcvp, да, согласен. Прошу прощения. Зачем тогда вообще здесь left? Вывести записи без ссылок на a и b? Такие есть? Думаете так будет лучше?.. Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 14:16 |
|
|
start [/forum/topic.php?fid=40&msg=39942842&tid=1560396]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 252ms |
0 / 0 |