72 похожих чатов

Привет. Есть 3 таблицы: CREATE TABLE posts (

id SERIAL NOT NULL PRIMARY KEY
);

CREATE TABLE tags (
id SERIAL NOT NULL PRIMARY KEY
);

CREATE TABLE posts_tags (
id SERIAL NOT NULL PRIMARY KEY,
post_id INT NOT NULL,
tag_id INT NOT NULL
);

Как можно найти все посты у которых есть ВСЕ перечисленные тэги?
Например у поста 1 есть тэги 1 и 2, а у поста 2 есть только тэг 1. И если я ищу по тэгам 1 и 2, то должен найти только пост 1.
То есть запрос
SELECT posts.*
FROM posts
INNER JOIN posts_tags ON posts.id = posts_tags.post_id
WHERE posts_tags.tag_id IN (1, 2);
не подходит, потому что он мне вернет посты у которых есть или тэг 1 или тэг 2

похоже что запрос
SELECT posts.*
FROM posts
INNER JOIN
(
SELECT post_id
FROM posts_tags
WHERE tag_id IN (1, 2)
GROUP BY post_id
HAVING COUNT(*) = 2
) AS t ON posts.id = t.post_id
делает то что надо, но он мне не особо нравится, так как такое сложно будет перенести на ORM

база postgresql

2 ответов

17 просмотров

CREATE TABLE posts_tags ( id SERIAL NOT NULL PRIMARY KEY, — это поле, id, тут не нужно.

where exists () and exists () and exists () или join .. join ... join ...

Похожие вопросы

Обсуждают сегодня

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
3
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
1. https://www.kaggle.com/code/ahmadrezagholami2001/housing-estimation-linear-regression 2. https://www.kaggle.com/code/ahmadrezagholami2001/uncovering-quality-in-wines-logis...
Ahmadreza
1
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
Карта сайта