Найдите строку с наиболее верными столбцами значений

#sql

Вопрос:

Пользователь таблицы

estado_id идентификатор пользователя Покупки mercado feira
1 1 1 0 1
1 2 1 1 1
1 3 1 0 1

Таблица Сидаде

estado_id идентификатор версии Имя Тип
1 1 хосе Покупки
1 2 Мария feira
1 2 Мария mercado
1 3 бруна mercado

Мне нужно сравнить состояния и привести только те, которые охватывают критерии пользователя x, но таблица пользователей может содержать сотни пользователей, и мне просто нужно вернуться к тому, к какому пользователю x привязан. В таблице пользователей мне нужно указать всех, кто, по их мнению, соответствует. Если в таблице покупок и ярмарки значение равно 1, а рынок равен 0, то в этих версиях должны быть возвращены покупки и ярмарка, мне удалось вывести только данные пользователя / id_state, однако, когда я сравниваю таблицу пользователей = 1 с таблицей города тип = покупки, но я не могу найти способ сделать это, потому что » это должно быть динамичным

 WITH CTE AS (
    SELECT cidade.*, uv.user_id, uv.shopping, uv.mercado, uv.feira
    FROM cidade
    INNER JOIN userst as uv ON cidade.estado_id = uv.estado_id
    WHERE cidade.estado_id = 1 AND uv.user_id = 1
)
SELECT [type], shopping, mercado, feira
FROM CTE
 

Мои ожидания

estado_id идентификатор версии Имя Тип идентификатор пользователя
1 1 хосе Покупки 1
 CREATE TABLE cidade(
    estado_id int,
    version_id int,
    name varchar(255),
    [type] varchar(255)
);

CREATE TABLE userst (
    estado_id int,
    user_id int,
    shopping int,
    mercado int,
     feira int
);

INSERT INTO cidade (estado_id, version_id, name, [type])
    VALUES (1, 1, 'jose', 'shopping')
    , (1, 2, 'maria', 'feira')
    , (1, 2, 'maria', 'mercado')
    , (1, 3, 'bruna', 'mercado');    

INSERT INTO userst (estado_id, user_id, shopping, mercado, feira)
    VALUES (1, 1, 1, 0, 1)
    , (1, 2, 1, 1, 1)
    , (1, 3, 1, 0, 1);
 

Комментарии:

1. MySQL <> SQL Server <><> PostgreSQL — пожалуйста, исправьте свои теги в соответствии с фактической СУБД, которую вы используете.

2. Я должен сказать, что тоже не понимаю вашей логики соответствия. Например, почему не возвращается «мария:меркадо»? В столбце «меркадо» таблицы пользователей есть 1.

3. Я удалил конфликтующие теги СУБД… не стесняйтесь добавлять обратно правильный.