Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dian Carlos

[Resolvido] Como dar 2 SELECTS em uma única tabela?

Recommended Posts

Olá amigos do iMasters o/ :thumbsup:

 

Tem como dar 2 selects em uma tabela só?

 

Tenho uma página de notícias onde:

 

`uNoticiaCategoriaDistak` = 1 (a notícia fica em destaque)

`uNoticiaCategoriaDistak` = 2 (a notícia não fica em destaque)

 

Bloco 1 = exibe uma noticia com (`uNoticiaCategoriaDistak` = 1)

(SELECT * FROM `unoticias` WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,1)

 

Bloco 2 = exibe as 9 últimas notícias da categoria que estejam marcadas com (`uNoticiaCategoriaDistak` = 2)

SELECT * FROM `unoticias` WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 2) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,9

 

Bloco 3 = exibe 6 noticias que estejam com (`uNoticiaCategoriaDistak` = 1)

SELECT * FROM `unoticias` WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 1,6

 

 

o bloco 1 e 3 exibe as últimas 7 noticias em destaque (bloco 1 tem o LIMIT 0,1 | bloco 2 tem o LIMIT 1,6)

o bloco 2 exibe as última notícias registradas que não estejam em destaque.

 

Eu quero que, quando a notícia em destaque for maior que o limite 1,6 ela seja exibida junto com a consulta do bloco 2 em ordem, as 2 consultas juntas.

 

tem como fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

union resolve, creio ...

 

SELECT '1' BLOCO,N.* FROM `unoticias` AS N WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,1)
UNION ALL
SELECT '2' BLOCO,N.* FROM `unoticias`  AS N WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 2) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,9
UNION ALL
SELECT '3' BLOCO,N.* FROM `unoticias`  AS N WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 1,6

Compartilhar este post


Link para o post
Compartilhar em outros sites

union resolve, creio ...

 

SELECT '1' BLOCO,N.* FROM `unoticias` AS N WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,1)
UNION ALL
SELECT '2' BLOCO,N.* FROM `unoticias`  AS N WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 2) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,9
UNION ALL
SELECT '3' BLOCO,N.* FROM `unoticias`  AS N WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 1,6

 

Olá Motta. Obrigado pela resposta, não conhecia o comando UNION do sql.

 

Bem, minha sintaxe ficou assim e funcionou, trazendo os resultados que eu queria.

 

(SELECT * FROM `unoticias` WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 2) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,5)
UNION ALL
(SELECT * FROM `unoticias` WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%politica%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 7,5)

 

Mas agora como eu faço pra ordenar todos esses resultados pela ordem data? (ORDER BY `uNoticiaDataIn`)

 

------------

 

 

Motta, muito obrigado pela ajuda, consegui resolver o problema da ordenação pesquisando aqui no forum..

 

Podem marcar como RESOLVIDO!

 

Código como ficou:

(SELECT * FROM `unoticias` WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 2) AND ((`uNoticiaCategoriaURL` LIKE "%'.$uSection.'%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 0,5)
UNION ALL
(SELECT * FROM `unoticias` WHERE (`uNoticiaLock` = 1) AND (`uNoticiaCategoriaDistak` = 1) AND ((`uNoticiaCategoriaURL` LIKE "%'.$uSection.'%")) ORDER BY `uNoticiaDataIn` DESC LIMIT 7,5) ORDER BY `uNoticiaDataIn` DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.