Dúvida com uma query

2 views
Skip to first unread message

Celso Junior

unread,
Apr 7, 2011, 9:08:41 AM4/7/11
to php-b...@googlegroups.com
Olá, pessoal. Sei que esse é um grupo sobre PHP, mas já que não existe um grupo correspondente que trata de assuntos sobre banco de dados, aqui parece ser o mais ideal para postar minha dúvida.

Tenho três tabelas:

conteudo (lista de textos com identificação única e identificação do blog que eles pertencem)
________________________
id_blog | texto | id_conteudo
------------------------------------------
2 | teste125 | 1
2 | test1454 | 2
4 | nonononon | 3
4 | nlalalalala | 4
4 | testeteste | 5
9 | nadanana | 6
-----------------------------



seguindo (blogs que os usuários estão seguindo)
_________________
id_blog | usuario
-----------------------------
2 | celso
4 | celso
4 | marcelo
9 | paula 
-------------------------------



lidos (itens já lidos pelos usuários)
____________________
id_conteudo | usuario
-----------------------------------
2 | celso
3 | celso
3 | marcelo
------------------------------------



Quero fazer a seguinte query:

Seleciona os conteúdos pertencentes aos blogs que usuário X segue (relacionar tabela conteudo com seguindo), mas não incluir no resultados da query os conteúdos já lidos pelo usuário X (a tabela lidos). Devo usar INNER JOIN, SUBQUERY… ???

Já tentei de várias maneiras, mas nunca consigo remover dos resultados os conteúdos já lidos pelo usuário. Alguém pode me ajudar a montar a query?

Obrigado. :)


Cassiano Ricardo Mourão

unread,
Apr 7, 2011, 9:20:17 AM4/7/11
to php-b...@googlegroups.com
INNER JOIN + SUBQUERY:

SELECT * FROM conteudo C
    INNJER JOIN seguindo S ON C.id_blog = S.id_blog
WHERE S.usuario = 'usuario' AND C.id_conteudo NOT IN
    (SELECT id_conteudo FROM lidos WHERE usuario = 'usuario')

Se não funcionar posta o erro


--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.

Tiago Agostinho

unread,
Apr 7, 2011, 9:26:24 AM4/7/11
to php-b...@googlegroups.com, Cassiano Ricardo Mourão
outra forma:

SELECT c.texto from conteudo.c, seguindo s, lidos l
WHERE s.usuario = 'Celso'
AND c.id_blog = s.id_blog
AND c.id_conteudo NOT IN (SELECT id_conteudo FROM lidos WHERE usuario = 'Celso')

Celso Junior

unread,
Apr 7, 2011, 9:31:08 AM4/7/11
to php-b...@googlegroups.com, Cassiano Ricardo Mourão
Muito obrigado, gente.
Minha query estava praticamente certa, só faltava o NOT IN para completar a lógica.

 :)
Reply all
Reply to author
Forward
0 new messages