Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Extracción de campos (https://www.clubdelphi.com/foros/showthread.php?t=95058)

Casimiro Noteví 10-02-2021 08:59:50

Entonces realmente es el mayor sorteo, el número no sirve para nada.

kuan-yiu 10-02-2021 09:30:53

Hay varios modos de hacerlo espero que este te sirva: Para un país todos los datos de la tupla con el mayor sorteo y dentro de este el mayor numero.
Código SQL [-]
select * from tiket a
where pais= : pais
and sorteo=(select max(sorteo) from tiket )
and numero=(select max(numero) from tiket b where a.sorteo=b.sorteo)

(Aunque yo cuantas más explicaciones leo menos entiendo)

pablocarlos 10-02-2021 14:03:21

Cita:

Empezado por kuan-yiu (Mensaje 539972)
Hay varios modos de hacerlo espero que este te sirva: Para un país todos los datos de la tupla con el mayor sorteo y dentro de este el mayor numero.

(Aunque yo cuantas más explicaciones leo menos entiendo)


Mientras más se aclara mas oscurece....


Para un país todos los datos de la tupla con el mayor sorteo y dentro de este el mayor numero. Exactamente


Probaré. Gracias


Casimiro: El numero si sirve. Kuan-yiu lo resumio perfecto: para cada pais los datos con el mayor sorteo y dentro de este el mayor numero.

Casimiro Noteví 10-02-2021 16:18:37

A ver, pongamos 2 casos:

#11 chile 1 120
#12 chile 2 10


Antes comentaste que ahí debe devolver el registro #12 porque el sorteo es mayor.
Y en este caso:

#11 chile 2 10
#12 chile 1 120


Debe devolver el registro #11 porque el sorteo es mayor.

O sea, lo dicho, el número no sirve para nada.

La única opción posible para devolver el número mayor es que existan sorteos repetidos:

#11 chile 1 10
#12 chile 1 120


En ese caso devolvería el #12, pero no creo que haya sorteos repetidos, así que insisto en que el número no sirve para nada :)

pablocarlos 10-02-2021 17:13:51

Cita:

Empezado por Casimiro Notevi (Mensaje 539976)
En ese caso devolvería el #12, pero no creo que haya sorteos repetidos, así que insisto en que el número no sirve para nada :)

hay sorteos repetidos. En un sorteo entran varios numeros por lo que el sorteo 3 (como todos los números de sorteos) tendrá un número del 1 al 1000000.
por eso el resultado debe ser un pais, dentro de ese pais un sorteo mayor y dentro de este un numero mayor.

Gracias por tu interés. Saludos

Casimiro Noteví 10-02-2021 18:27:58

Es lo que tiene el no explicar bien el problema, que tenemos que dar palos de ciego hasta que poco a poco vamos obteniendo toda la información ;)
Bien, entonces sí te sirve lo último publicado por kuan-yiu ^\||/

pablocarlos 10-02-2021 18:33:47

Cita:

Empezado por Casimiro Notevi (Mensaje 539980)
Bien, entonces sí te sirve lo último publicado por kuan-yiu ^\||/

Lamentablemente no. Pero sigo insistiendo con lo poco que se de sql. Gracias por estar. Saludos

pablocarlos 10-02-2021 19:23:51

Bueno. Como siempre cuando sale lo que uno busca, escribo la solución
Código SQL [-]
select id_tiquet, pais, Numero, Sorteo from tiket 
where numero <>0 and Pais = : pais and sorteo=(select max(sorteo))
and numero = (select max(numero))
ORDER by  Sorteo and Numero desc limit 1


Gracias a todos los que respondieron que de alguna u otra forma han logrado que obtuviera los resultados buscados...

Pido disculpas si "queme" alguna neurona por mis malas explicaciones, "cuando uno sabe lo que quiere cree que el mundo entenderá el problema". Tambien aprendí que debo plantear la duda lo más clara posible y con todos los datos para evitar --> Diria Casimiro "dar palos de ciego"... Gracias y feliz semana a todos!

Casimiro Noteví 10-02-2021 20:33:09

Me alegro de que por fin lo hayas solucionado ^\||/^\||/^\||/

cloayza 10-02-2021 21:08:44

Estimado PabloCarlos

Desde el principio no quedó claro su problema, si me permite, le aconsejo para futuras consultas aportar mas antecedentes.

Bueno tomando como base lo que han dicho los compañeros del foro, le propongo la siguiente consulta que creo puede responder a su problema.

Utilicé los datos aportados por Casimiro Notevi...

Código SQL [-]
select A.id_tiquet,
       A.pais,
       B.sorteo,
       B.numero

from tickets A,
     (
     select tickets.pais,
            tickets.sorteo,
            max(tickets.numero) numero
     from tickets,
          (select tickets.pais,
                  max(tickets.sorteo) sorteo
           from tickets
           where tickets.pais= : pais
           group by 1
           ) Sorteos
     
     where tickets.pais=Sorteos.pais and
           tickets.sorteo=Sorteos.sorteo
     group by 1,2
     ) B
where A.pais=B.pais and
      A.sorteo=B.sorteo and
      A.numero=B.numero

Espero le ayuda o aporte ideas para que logre la solución....
Saludos cordiales

cloayza 10-02-2021 22:22:27

Estimado PabloCarlos, está seguro que la consulta arroja los resultados esperados...Tengo mis dudas al respecto...

Cita:

Empezado por pablocarlos (Mensaje 539982)
Código SQL [-]
select id_tiquet, pais, Numero, Sorteo from tiket 
where numero <>0 and Pais = : pais and sorteo=(select max(sorteo))
and numero = (select max(numero))
ORDER by  Sorteo and Numero desc limit 1

Saludos cordiales

pablocarlos 11-02-2021 02:08:22

Cita:

Empezado por cloayza (Mensaje 539988)
Estimado PabloCarlos
Bueno tomando como base lo que han dicho los compañeros del foro, le propongo la siguiente consulta que creo puede responder a su problema.

De lujo!!!! Muchas gracias!! Saludos


La franja horaria es GMT +2. Ahora son las 02:03:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi