Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Extracción de campos

Saludos. Tengo una tablas en sql y necesito encontrar tres campos. Numero, Sorteo, Pais, Donde pais se esta pasando por parametro.
Escribo esto -->
Código SQL [-]
SELECT id_tiquet, Numero, Sorteo, Pais FROM tiket
Where  Numero = (SELECT MAX(Numero) from tiket WHERE Pais = : pais)  or Sorteo = (SELECT MAX(Sorteo) from tiket where Pais = : pais)
order by Sorteo desc LIMIT 1
Obvio que no trae lo que necesito.
El numero y sorteo debe ser el valor mayor dentro de la tabla filtrando por pais, osea Chile sorte 3 numero 49
Donde todos los registros de la tabla encuentra a todos los de Chile y dentro de ese pais el sorteo max y el numero max. Obvio que no funciona como es debido. Se agradece alguna sugerencia. Saludos!
Responder Con Cita
  #2  
Antiguo 09-02-2021
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
No sé si entendí bien los datos de la tabla
Código SQL [-]
select max(sorteo) from ticket
where numero=(select max(numero) from tiket where pais= : pais)
Responder Con Cita
  #3  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Gracias Kuan_yiu

Código SQL [-]
select Numero, Sorteo, Pais, max(Numero) from tiket
where Sorteo=(select max(Sorteo) from tiket where pais= : pais)
order by Sorteo desc LIMIT 1

Haciendo pruebas con tres paises no da el resultado deseado
Pais "Argentina" bien
Pais "Chile" bien
Pais "Uruguay" resultado numero max "1000000" sorte "2" pais "Argentina" cuando debería ser numero max 68 sorteo 2 pais Uruguay.
Sigo probando...

Última edición por pablocarlos fecha: 09-02-2021 a las 13:39:10.
Responder Con Cita
  #4  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Código SQL [-]
select Numero, Sorteo, Pais, max(Numero) from tiket where Sorteo=(select max(Sorteo) from tiket where pais= : pais) order by Sorteo desc LIMIT 1
Gracias Kuan_yiu

Haciendo pruebas con tres paises no da el resultado deseado
Pais "Argentina" bien
Pais "Chile" bien
Pais "Uruguay" resultado numero max "1000000" sorte "2" pais "Argentina" cuando debería ser numero max 68 sorteo 2 pais Uruguay.
Sigo probando... Creo que debería filtrar primero por pais, luego dentro del país por max(sorteo) y dentro de país y sorteo y desde los valores encontrados mostrar el max(numero).
Responder Con Cita
  #5  
Antiguo 09-02-2021
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Pon un ejemplo de los datos y exactamente la línea que quieres conseguir.
Responder Con Cita
  #6  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por kuan-yiu Ver Mensaje
Pon un ejemplo de los datos y exactamente la línea que quieres conseguir.
Perfecto, Una tabla llamada tiket, campos ---> sorteo, numero, pais, id. tiket (hay otros campos pero no estàn involucrados) Concretamente necesito que busque un pais (ese sería el parametro) dentro de ese país encuentre el número de sorteo mayor (max(Sorteo) y dentro de ese rango de sorteo el numero mayor (max(numero)...
Ejemplo
tengo los siguientes datos pais uruguay (obvio hay otros paises) sorteos 1, 2, 3 (debería filtrar por el 3) numeros 1,2 ....1002 sorteo 2, números 1,2..1000 sorteo 3, (debería mostrar sorteo 3 y el numero 1000). Cerrando, con el parametro 'Uruguay' debería traer sorteo 3 numero 1000. Gracias por responder. Saludos
Responder Con Cita
  #7  
Antiguo 09-02-2021
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Si he entendido bien quieres la línea completa. Para el país indicado el número máximo de cada sorteo.
Código SQL [-]
select a.* from tiket a
where a.pais= : pais and a.numero in
(select max(b.numero) numero from tiket b
where a.Sorteo=b.Sorteo)
order by a.sorteo
Como no indicas que motor de BD usas he tratado de hacerlo sin funciones especiales.
Responder Con Cita
  #8  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por kuan-yiu Ver Mensaje
Si he entendido bien quieres la línea completa. Para el país indicado el número máximo de cada sorteo.
Código SQL [-]select a.* from tiket a where a.pais= : pais and a.numero in (select max(b.numero) numero from tiket b where a.Sorteo=b.Sorteo) order by a.sorteo

Como no indicas que motor de BD usas he tratado de hacerlo sin funciones especiales.
bd mysql. Lo extraño (para mi) que tus lineas funcionan en dos paises, busco un tercero y no encuentra nada, Gracias

Última edición por pablocarlos fecha: 09-02-2021 a las 17:40:33.
Responder Con Cita
  #9  
Antiguo 09-02-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que después de un montón de mensajes no queda exactamente claro de lo que necesitas, y el motivo es que siempre se dice lo que se está haciendo, pero no realmente lo que se quiere hacer. Lo importante aquí es la estructura de las tablas involucradas (al menos los campos involucrados) y lo que se quiere conseguir.

Siempre aconsejo leer este hilo donde se explica cómo hacer mejor la pregunta, para obtener una respuesta más acertada.
Responder Con Cita
  #10  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Es que después de un montón de mensajes no queda exactamente claro de lo que necesitas, y el motivo es que siempre se dice lo que se está haciendo, pero no realmente lo que se quiere hacer. Lo importante aquí es la estructura de las tablas involucradas (al menos los campos involucrados) y lo que se quiere conseguir.

Siempre aconsejo leer este hilo donde se explica cómo hacer mejor la pregunta, para obtener una respuesta más acertada.

Veamos.... quiero filtrar la tabla tiket con campos pais, sorteo, numero, por un pais dentro de ese pais filtrar por max(sorteo) y dentro de ese sorteo por max(numero). bd mysql



pais = Chile
chile = sorteo 3
chile, sorteo 3 = numero 4
resultado chile, 3, 4 (pais, sorteo(el mayor), numero(el mayor))

Y no se como explicar mejor
Responder Con Cita
  #11  
Antiguo 09-02-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por kuan-yiu Ver Mensaje
No sé si entendí bien los datos de la tabla
Cita:
Empezado por kuan-yiu Ver Mensaje
Pon un ejemplo de los datos y exactamente la línea que quieres conseguir.
Cita:
Empezado por kuan-yiu Ver Mensaje
Si he entendido bien quieres la línea completa. Para el país indicado el número máximo de cada sorteo.
Como no indicas que motor de BD usas he tratado de hacerlo sin funciones especiales.
Cita:
Empezado por Casimiro Notevi Ver Mensaje
..no queda exactamente claro de lo que necesitas.. Lo importante .. es la estructura de las tablas involucradas (al menos los campos involucrados) y lo que se quiere conseguir.
Yo creo que está claro que constantemente se ha repetido que no está claro y que se necesitaría un ejemplo de los datos, estructura de la tabla, etc.
Pero, bien, me parece que ya está más claro, lo que tienes es algo así:



Y quieres conseguir algo así como:

7 | CHILE | 3 | 16

¿Es eso?

Última edición por Casimiro Notevi fecha: 09-02-2021 a las 19:55:22.
Responder Con Cita
  #12  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Yo creo que está claro que constantemente se ha repetido que no está claro y que se necesitaría un ejemplo de los datos, estructura de la tabla, etc.
Pero, bien, me parece que ya está más claro, lo que tienes es algo así:





Y quieres conseguir algo así como:


7 | CHILE | 3 | 16


¿Es eso?
Exacto!

Gracias por tratar de entender
Responder Con Cita
  #13  
Antiguo 09-02-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Otra duda, si existe esto:
Cita:
5 | CHILE | 2 | 28
7 | CHILE | 3 | 16
¿Qué registro debe devolver?
Responder Con Cita
  #14  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Otra duda, si existe esto:

¿Qué registro debe devolver?
el 7 (mayor sorteo) con mayor numero osea si tengo chile 3, 16 y chile, 3, 17 debería devolver chile, 3, 17

Última edición por pablocarlos fecha: 09-02-2021 a las 20:18:56.
Responder Con Cita
  #15  
Antiguo 09-02-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya estamos, no se entiende
Responder Con Cita
  #16  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Ya estamos, no se entiende

la consulta deberia devolver el id 285 chile, sorteo 2 numero 45 por que dentro de chile el sorteo mayor es el 2 y dentro del sorteo mayor (2) el numero mayor es el 45...

Ya con imagen creo no confundir. Gracias
__________________
Si supieras lo que estoy haciendo, no lo llamarías investigación.
Responder Con Cita
  #17  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
No me permitio subir imagen
__________________
Si supieras lo que estoy haciendo, no lo llamarías investigación.
Responder Con Cita
  #18  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
nuevo planteo


Tengo una tabla en mysql con los siguientes campos: id (autoincremental), pais(string), sorteo(int), numero(int).

necesito encontrar una fila con un determinado pais (este por parametro), dentro del pais encontrar el numero de sorteo más alto y dentro del sorteo el numero max... por ejemplo
tengo pais sorteo numero
chile 1 10
chile 1 12
chile 2 100
españa 1 2
españa 1 3
si busco por chile el resultado debería ser : chile-2-100 por que el sorteo mayor es 2 y el número mayor dentro del sorteo es 100. En el caso de españa debería encontrar españa,1,3
por que dentro de españa el numero de sorteo mayor es 1 y el número mayor en número es 3. Espero ser claro. Muchas gracias
__________________
Si supieras lo que estoy haciendo, no lo llamarías investigación.
Responder Con Cita
  #19  
Antiguo 09-02-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pablocarlos Ver Mensaje
chile 1 10
chile 1 12
chile 2 100
españa 1 2
españa 1 3
si busco por chile el resultado debería ser : chile-2-100 por que el sorteo mayor es 2 y el número mayor dentro del sorteo es 100. En el caso de españa debería encontrar españa,1,3
por que dentro de españa el numero de sorteo mayor es 1 y el número mayor en número es 3. Espero ser claro. Muchas gracias
Ya, pero eso no responde a mi duda, imagina que tienes:
#10 chile 1 10
#11 chile 1 120
#12 chile 2 10
#13 españa 1 2
#14 españa 1 3

¿Qué debería sacar de Chile, el registro #12, porque el 2 es mayor que el 1, o debería sacar el registro #11 porque 120 es mayor que 10?
Responder Con Cita
  #20  
Antiguo 09-02-2021
pablocarlos pablocarlos is offline
Miembro
 
Registrado: ene 2021
Posts: 56
Poder: 4
pablocarlos Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Ya, pero eso no responde a mi duda, imagina que tienes:
#10 chile 1 10
#11 chile 1 120
#12 chile 2 10
#13 españa 1 2
#14 españa 1 3

¿Qué debería sacar de Chile, el registro #12, porque el 2 es mayor que el 1, o debería sacar el registro #11 porque 120 es mayor que 10?
el 12.
primero por pais, dentro de pais por numero de sorteo mayor y luego por numero mayor... en el ejemplo suyo sería el 12. Muchas gracias por estar presente!
__________________
Si supieras lo que estoy haciendo, no lo llamarías investigación.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
extracción en JSON Ulises PHP 9 16-10-2018 20:46:28
Extracción XBRL cincosoft Varios 0 16-12-2008 10:53:35
Extraccion de datos de un LISTVIEW ebreton31 Varios 2 22-11-2006 23:05:46
Extracción de datos en campos de fecha dec Trucos 0 29-06-2006 23:07:25
Extracción de parte de una cadena Arkaz Varios 3 02-11-2005 22:33:36


La franja horaria es GMT +2. Ahora son las 02:55:29.


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