MySQL Заявление без JOIN - PullRequest
0 голосов
/ 04 июля 2011

У меня есть таблица MySQL, я пытаюсь запросить article_data, и я не хочу делать никаких соединений с другими таблицами.

Имеет ряды:

article_id  doc_type  doc_type_id
1           1         2
1           2         1
2           1         2
3           1         2
3           2         1

Я пытаюсь написать запрос, который вернул бы, где doc_type равно 1, а doc_type_id равно 2 И где у него есть еще одна строка для того же article_id, где doc_type равно 2 и doc_type_id равно 1, поэтому в приведенном выше примере я пытаюсь вернуть article_id 1 и 3.

Есть идеи, как написать SQL-запрос для этого?

Ответы [ 4 ]

1 голос
/ 04 июля 2011

Вам не нужно присоединяться к другим таблицам, но вы можете сделать это с помощью самостоятельного объединения

Это из головы, вам может понадобиться настроить синтаксис

select distinct article_id
from articles_data a
join articles_data b on b.articles_id = a.articles_id
where a.doc_type = 1 and a.doc_type_id = 2
and b.doc_type = 2 and b.doc_type_id = 1
0 голосов
/ 04 июля 2011
SELECT DISTINCT article_id
FROM article_data ad
WHERE doc_type = 1
  AND doc_type_id = 2
  AND EXISTS
    ( SELECT *
      FROM article_data ad2
      WHERE ad2.doc_type = 2
        AND ad2.doc_type_id = 1
        AND ad2.article_id = ad.article_id
    )
0 голосов
/ 04 июля 2011
SELECT article_id
FROM article_data
WHERE (doc_type = 1 AND doc_type_id = 2)
   OR (doc_type = 2 AND doc_type_id = 1)
GROUP BY article_id
HAVING COUNT(DISTINCT doc_type) = 2 AND COUNT (DISTINCT doc_type_id) = 2
0 голосов
/ 04 июля 2011
select distinct article_id
from articles_data ad
where 
    doc_type = 1 and 
    doc_type_id = 2 and
    article_id in (
        select article_id 
        from articles_data
        where 
            article_id = ad.article_id and 
            doc_type = 2 and 
            doc_type_id = 1
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...