Как я могу объединить два битовых столбца в SQL? - PullRequest
0 голосов
/ 12 июля 2020

Скажем, у меня есть две таблицы

1-я таблица называется Foo и имеет битовый столбец ACCESS_ALLOWED

, а другая таблица называется Bar и имеет тот же битовый столбец ACCESS_ALLOWED

Итак, я хочу написать запрос SQL, который объединяет результаты соединения между этими таблицами и выбирает результат на основе индивидуальных значений. Что-то вроде функции coalesce.

Если оба значения равны 1, тогда я хочу, чтобы запрос возвращал 1, а если хотя бы одно из значений 0, тогда запрос должен возвращать 0. Возможно ли это?

Примеры данных:

Foo Table

| ID | ACCESS_ALLOWED |
| 10 | 1              |
Bar Table

| ID | Foo_ID | ACCESS_ALLOWED |
| 5  | 10     | 0              |

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Вы можете использовать побитовый оператор и &.

SELECT f.access_allowed & b.access_allowed access_allowed
       FROM foo f
            INNER JOIN bar b
                       ON b.foo_id = f.id;

db <> fiddle

0 голосов
/ 12 июля 2020

Хотите что-то вроде этого?

select (case when f.access_allowed = 1 and b.access_allowed = 1 then 1 else 0 end) as both_together
from foo f join
     bar b
     on ? = ?   -- join keys here

Обратите внимание, что вам нужен какой-то способ join таблиц. Или используйте cross join, если каждая таблица имеет только одну строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...