#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. Я удалил конфликтующие теги СУБД… не стесняйтесь добавлять обратно правильный.