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

SQL - Pesquisa Sequenciada Ordenada


Jociel Thiago

Pergunta

Bom Dia Galera

Situação

Tenho um banco de dados Access, com uma tabela chamada tb_anuncios_prest, com nenhum campo indexado, sendo os campos:

Codigo - num

Cliente - num

Titulo - text

Descricao - text

Tipo - text - E=empresa A=Autonomo

Data_Cadastro - Date

ex de registros:

Codigo | Cliente | Titulo | Descricao | Tipo | Data

0 | 1 | Advocacia | Anuncio teste | A | 15/09/2011

1 | 1 | Advocacia 0 | Anuncio teste | E | 15/09/2011

2 | 1 | Advocacia 1 | Anuncio teste | E | 13/09/2011

3 | 1 | Advocacia 2 | Anuncio teste | A | 15/09/2011

4 | 1 | Advocacia 3 | Anuncio teste | E | 14/09/2011

5 | 1 | Advocacia 4 | Anuncio teste | A | 15/09/2011

6 | 1 | Advocacia 5 | Anuncio teste | E | 15/09/2011

7 | 1 | Advocacia 6 | Anuncio teste | E | 12/09/2011

8 | 1 | Advocacia 7 | Anuncio teste | A | 13/09/2011

prescsico criar um SELECT que retorne todos os campos organizados de duas formas: 1º do ultimo codigo para o primeiro, ou seja de ordem decrescente, e 2º que o campo tipo fique na ORDEM: E - A - E -A, ou seja uma Empresa um Autonomo.

Fiz esta Consulta:

SELECT * FROM tb_anuncios_prest ORDER BY tb_anuncios_pres.codigo DESC

mas não tenho Ideia de como Organizar a tabela de forma a retornar organizadamente o tipo

o resultado que eu consegui foi este:

Codigo | Cliente | Titulo | Descricao | Tipo | Data

8 | 1 | Advocacia 7 | Anuncio teste | A | 13/09/2011

7 | 1 | Advocacia 6 | Anuncio teste | E | 12/09/2011

6 | 1 | Advocacia 5 | Anuncio teste | E | 15/09/2011

5 | 1 | Advocacia 4 | Anuncio teste | A | 15/09/2011

4 | 1 | Advocacia 3 | Anuncio teste | E | 14/09/2011

3 | 1 | Advocacia 2 | Anuncio teste | A | 15/09/2011

2 | 1 | Advocacia 1 | Anuncio teste | E | 13/09/2011

1 | 1 | Advocacia 0 | Anuncio teste | E | 15/09/2011

0 | 1 | Advocacia | Anuncio teste | A | 15/09/2011

eu quero este:

Codigo | Cliente | Titulo | Descricao | Tipo | Data

7 | 1 | Advocacia 6 | Anuncio teste | E | 12/09/2011

8 | 1 | Advocacia 7 | Anuncio teste | A | 13/09/2011

6 | 1 | Advocacia 5 | Anuncio teste | E | 15/09/2011

5 | 1 | Advocacia 4 | Anuncio teste | A | 15/09/2011

4 | 1 | Advocacia 3 | Anuncio teste | E | 14/09/2011

3 | 1 | Advocacia 2 | Anuncio teste | A | 15/09/2011

2 | 1 | Advocacia 1 | Anuncio teste | E | 13/09/2011

0 | 1 | Advocacia | Anuncio teste | A | 15/09/2011

1 | 1 | Advocacia 0 | Anuncio teste | E | 15/09/2011

sei que parece que não mudou nada, mas observe bem o campo codigo e o tipo e imagine uma tabela com mais registro,

Se alguém poder me ajudar estarei aqui pra retirar outras duvidas.

Atenciosamente Jociel Thiago

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

A própria aplicação do Access mostra isso em uma tabela ou outro sistema chama isso?

Da pra fazer algo assim:

-Cria duas tabelas temporárias idênticas a sua tabela de dados e com um campo autoincrement (numeração automática)

-popula uma com os "A" e outra com os "B" ordenados por código decrescente

-Depois busca um union das duas ordenado pelo código autoincrement que você criou e depois pelo tipo

-Depois de usar da um drop nas tabelas temporárias

Link para o comentário
Compartilhar em outros sites

  • 0

Testa essa SQL e vê se funciona

SELECT

COUNT(*) as posicao ,

a.codigo,

a.cliente,

a.titulo,

a.descricao,

a.tipo,

a.data

FROM

tb_anuncios_prest AS a

INNER JOIN tb_anuncios_prest AS b

ON ( a.codigo < b.codigo OR a.codigo = b.codigo )

WHERE

a.tipo = 'A'

GROUP BY

a.codigo,

a.cliente,

a.titulo,

a.descricao,

a.tipo,

a.data

ORDER BY

count(*);

Objetivo é trazer todos os A ordenados por código e colocar o número da linha no campo posição. Vê se funciona, se der certo você me avisa que faço o resto da SQL pra você

**Editei a SQL agora, tava errada hehehe

Editado por Iceguy
Link para o comentário
Compartilhar em outros sites

  • 0

Será que Access roda isso? ahuahauahua

SELECT
r.codigo,
r.cliente,
r.titulo,
r.descricao,
r.tipo,
r.data

FROM
(
SELECT
COUNT(*) as posicao ,
a.codigo,
a.cliente,
a.titulo,
a.descricao,
a.tipo,
a.data

FROM
(SELECT * FROM tb_anuncios_prest WHERE tipo = 'A' ORDER BY codigo DESC) AS a
INNER JOIN (SELECT * FROM tb_anuncios_prest WHERE tipo = 'A' ORDER BY codigo DESC) AS b
ON ( a.codigo < b.codigo OR a.codigo = b.codigo )

GROUP BY
a.codigo,
a.cliente,
a.titulo,
a.descricao,
a.tipo,
a.data

UNION

SELECT
COUNT(*) as posicao ,
a.codigo,
a.cliente,
a.titulo,
a.descricao,
a.tipo,
a.data

FROM
(SELECT * FROM tb_anuncios_prest WHERE tipo = 'E' ORDER BY codigo DESC) AS a
INNER JOIN (SELECT * FROM tb_anuncios_prest WHERE tipo = 'E' ORDER BY codigo DESC) AS b
ON ( a.codigo < b.codigo OR a.codigo = b.codigo )

GROUP BY
a.codigo,
a.cliente,
a.titulo,
a.descricao,
a.tipo,
a.data
) AS r

ORDER BY
r.posicao,
r.tipo DESC;

Testei com esses seus dados e ele retornou isso:

codigo cliente titulo descricao tipo data

7| 1 Advocacia 6 Anuncio de Teste E 12/9/2011

8 1 Advocacia 7 Anuncio de Teste A 13/9/2011

6 1 Advocacia 5 Anuncio de Teste E 15/9/2011

5 1 Advocacia 4 Anuncio de Teste A 15/9/2011

4 1 Advocacia 3 Anuncio de Teste E 14/9/2011

3 1 Advocacia 2 Anuncio de Teste A 15/9/2011

2 1 Advocacia 1 Anuncio de Teste E 13/9/2011

0 1 Advocacia Anuncio de Teste A 15/9/2011

1 1 Advocacia 0 Anuncio de Teste E 15/9/2011

Editado por Iceguy
Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Deu Certo Sim O resultado que eu Deseja... oBrigado o Unico Detalhe que no Access o campo descricao é do tipo MEMORANDO, ou seja text longo e na tabela de retorno onde o texto é grande ele retornou um caractere não reconheceido tipo um quadrado

fora este detalhe, o resultado esperado esta certo

obrigado

Você tem alguma ideia de como resolver este problema no acces, do campo descricao, pois no SQL Server Funcionou Normalmente funcionou.

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...