Jump to content
Fórum Script Brasil
  • 0

SQL - Pesquisa Sequenciada Ordenada


Jociel Thiago

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by Iceguy
Link to comment
Share on other 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

Edited by Iceguy
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...