Ir para conteúdo
Fórum Script Brasil
  • 0

Instrução Sql


Snork

Pergunta

eu postei essa pergunta na seção banco de dados - mysql , mas lá não tive resposta então estou postando aqui tambem pois acredito que a grande maioria utilise o mysql como db ....

ultimo post :

não seria o caso de fazer uma nova tabela e relaciona-la... pois tudo é noticia...eu quero fazer uma consulta com as tres noticias mais recentes para coloca-las em destaque e fazer uma nova consulta com outras 10 noticias sem selecionar as 3 noticias que já foram selecionadas na primeira consulta .... acho que agora ficou mais facil de entender .... sabe como posso fazer isso ??? acho que preciso usar subquerys mas não sei como usa-la....

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom... posta aí como você pretende selecionar essas 3 notícias mais recentes...

Acho que você poderia usar um "ORDER BY campo DESC" junto com um "LIMIT 0,3". Isso deve chamar os 3 registros que foram inseridos por último, caso exista um campo que date isso.

Pra fazer outra query que exclua esses 3 resultados, acho que você vai ter que guardar alguma referência a eles em variáveis do PHP, pra que você possa montar a outra query.

Entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0

aqui seleciono os 3 primeiros registros:

$sql = "SELECT s1_id, s1_resumo, s1_imagem, s1_tipo, s1_data FROM s1 WHERE s1_tipo = '".$tipo."' ORDER BY s1_data DESC LIMIT 3";

$queryDestaques = mysql_query($sql);

agora como faço para selecionar outros 10 registros sem selecionar os 3 registros que já foram selecionados na instrução acima:

obs.: no manual mysql eu vi algo como subquery mas não entendi seu funcionamento direito acho que o segredo esta nessa subquery ex.:

$sql = "SELECT s1_id, s1_resumo, s1_imagem, s1_tipo, s1_data FROM s1 WHERE s1_id <> (SELECT * FROM s1 WHERE s1_tipo = '".$tipo."' ORDER BY s1_data DESC LIMIT 3) AND s1_tipo = '" .$tipo."' ORDER BY s1_data DESC LIMIT 12";

$queryRelacionadas = mysql_query($sql);

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, cara, sobre esse esquema de subqueries aí eu estou mais por fora que casca de ovo. De repente postando na seção de MySQL o grande gladiador te dá uma explicação sobre isso... smile.gif

Agora... acho que a solução desse problema pode ser bem simples. Você quer selecionar os 3 últimos, certo? Logo em seguida quer selecionar os 12 últimos sem pegar esses 3 que foram selecionados?

Eu, pra segunda query, usaria algo como:

SELECT * FROM tabela ORDER BY campo DESC LIMIT 3,9

Que retornaria do 4º ao 12º elemento.

Mas fazendo um pequeno teste aqui eu percebi que eles vêm todos em ordem inversa. E isso é claro por causa do DESC. Se você quiser que eles venham na ordem normal, daria pra fazer uma pesquisa geral antes pra saber o número de registros e então montar a query com base nisso... smile.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...