@furyon

Как составить запрос в JOIN?

Здравствуйте!
Юзаю PostgreSQL. Есть запрос, у него куча условий сильно менять его лень, нужно добавить условие, хотел добавить join окуратно, вот простейший пример:
CREATE TABLE t1 (
  id int
);
INSERT INTO t1 (id) VALUES (1);
INSERT INTO t1 (id) VALUES (2);
INSERT INTO t1 (id) VALUES (3);

CREATE TABLE t2 (
  t1_id  INT,
  status INT
);
INSERT INTO t2 (t1_id, status) VALUES (1, 1);
INSERT INTO t2 (t1_id, status) VALUES (1, 1);
INSERT INTO t2 (t1_id, status) VALUES (1, 3);


Делаю запрос:
SELECT t1.*
FROM t1
  INNER JOIN t2 ON (t1.id = t2.t1_id AND t2.status = 1)
WHERE
  id=1 OR id=2 OR id=3

В WHERE просто для примера что куча условий

В итоге я получу 2 одинаковые записи c id = 1, хотя нужно чтобы в t1 были только уникальные записи (данные из t2 меня не интересуют, нужно только чтобы там совпадало условие). Я конечно могу решить проблему добавив GROUP BY id в конец, но это пахнет не очень хорошо.
Курил про разные Join-ы, но ничего не вышло.

Буду благодарен любой помощи.
  • Вопрос задан
  • 230 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
У вас же 2 записи в t2, удовлетворяющие условию, поэтому и строки в результате 2.
Чтоб убрать повторяющиеся записи, добавьте distinct:
select distinct ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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