Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Como resolver la siguiente SQL

Estas en el tema de Como resolver la siguiente SQL en el foro de Bases de Datos General en Foros del Web. hola, tengo un listado de varios registros, y hay de iguales pero con un id mayor, pues necesito mostrar todos los registros, y en los ...
  #1 (permalink)  
Antiguo 03/03/2009, 09:00
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 20 años
Puntos: 10
Como resolver la siguiente SQL

hola,

tengo un listado de varios registros, y hay de iguales pero con un id mayor, pues necesito mostrar todos los registros, y en los q son iguales mostrar el q tenga el id mas grande.

ejemplo
id - dni - nombre - fecha
1 - 123456 - pepe - 20090101 *
2 - 234567 - juan - 20090101
3 - 345678 - jose - 20090101
4 - 123456 - pepe - 20090102 *

pues basicamente necesito hacer la consulta q me devuelva el id 2,3,4 ya q Pepe esta repetido, necesito su id mas alto...

como puedo resolverlo?


gracias de antemano!!!

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #2 (permalink)  
Antiguo 03/03/2009, 09:46
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 20 años, 4 meses
Puntos: 6
Respuesta: Como resolver la siguiente SQL

Hola q tal, espero que esto te sirva:

declare @table table( intid int, intdni int, varnombre varchar(20))
insert into @table values( 1, 123456, 'pepe' )
insert into @table values( 2, 234567, 'juan' )
insert into @table values( 3, 345678, 'jose' )
insert into @table values( 4, 123456, 'pepe' )

select max(intid), intdni, varnombre
from @table
group by intdni, varnombre

saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #3 (permalink)  
Antiguo 03/03/2009, 10:07
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 20 años
Puntos: 10
Respuesta: Como resolver la siguiente SQL

antes de nada, muchas gracias por la respuesta pero la cosa se me ha complicado un poquito mas.

explico:

tabla1 personas -> id, dni, idsala, nombre,fecha
tabla2 salas -> idsala, sala


id - dni - idseccion - nombre - fecha
1 - 123456 - 4 - pepe - 20090101 *
2 - 234567 - 1 - juan - 20090101
3 - 345678 - 4 - jose - 20090101
4 - 123456 - 2 - pepe - 20090102 *


hay un bucle q va pidiendo el personal de cada sala, el caso es el siguiente, Pepe estuvo un tiempo en la sala 4 y actualmente en la sala 2, lo q necesito es q en caso de q pidan la sala 4 Pepe no salga ya q actualmente esta en la sala 2...

es decir, en caso de q pida sala 1 -> juan, sala 4 -> jose (pepe ya no esta aqui), sala 2 -> pepe


espero q se me entienda!!!

gracias de antemano de nuevo!!!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 03/03/2009 a las 10:12
  #4 (permalink)  
Antiguo 03/03/2009, 13:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 9 meses
Puntos: 300
Respuesta: Como resolver la siguiente SQL

tabla1 personas -> id, dni, idsala, nombre,fecha
tabla2 salas -> idsala, sala


id - dni - idseccion - nombre - fecha
1 - 123456 - 4 - pepe - 20090101 *
2 - 234567 - 1 - juan - 20090101
3 - 345678 - 4 - jose - 20090101
4 - 123456 - 2 - pepe - 20090102 *

SELECT personas.nombre, personas.fecha, salas.sala from personas inner join (select max(fecha) FECHA, id from personas group by id)t1 on t1.FECHA=personas.fecha AND personas.id=t1.id INNER JOIN salas ON salas.idsala = personas.idsala WHERE salas.sala = 4

Esto te mostrará, creo (no lo he probado), quién está en la sala 4 en la última fecha.

Última edición por jurena; 03/03/2009 a las 13:31
  #5 (permalink)  
Antiguo 04/03/2009, 02:16
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 20 años
Puntos: 10
Respuesta: Como resolver la siguiente SQL

weeee, genial, muchas gracias... pero se sigue complicando mas la cosa...

entra en juego otra tabla

Personal -> id_persona, dni, nombre, fechaalta
Horas -> id_persona, dni, horas, fecha

Lo q tenemos de antes es del todo correcto pero claro, sale gente q ha trabajado fuera de ese periodo y eso no interesa, entonces, hay q añadir la tabla de horas para saber quien a trabajado en ese periodo y contabilizarlo en su ultima sala!

el tema de sumatorio de horas es un caso aparte, solo necesito q dado un periodo de fechas me devuelva el personal de la sala pedida siempre y cuando esta sea su ultima sala!

ejemplo
personal
idpersona - dni - idseccion - nombre - fechaalta
1 - 123456 - 4 - pepe - 20090101 *
2 - 234567 - 1 - juan - 20090101
3 - 345678 - 4 - jose - 20090101
4 - 123456 - 2 - pepe - 20090102 *


horas
idpersona - dni - idseccion - horas - fecha

1 - 123456 - 4 - 8 - 20090101
1 - 123456 - 4 - 8 - 20090102
4 - 123445 - 2 - 8 - 20090103

Aqui tenemos a Pepe, necesito que el resultado sea, que si pidan un rango de fechas, del 1 al 3 de la sala 4 - no me salga nada, pero si pido de la sala 2, se muestre a Pepe trabajando el 1,2 y 3, 8 horas cada día, ya q este su ultima sala es la 2 y no la 4!

el tema horas va aparte, pero lo pongo para dar un idea de lo que me piden....

espero q se me haya entendido!

muchas muchas gracias por echarme un cable!!!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #6 (permalink)  
Antiguo 05/03/2009, 14:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 9 meses
Puntos: 300
Respuesta: Como resolver la siguiente SQL

Sergi,

dinos cuáles son las tablas implicadas, sus relaciones y cómo introduces los datos (con algún ejemplo). Si quieres, copianos la estructura con algunos datos para que hagamos alguna prueba y dinos qué quieres buscar exactamente y qué debe salir (sé que lo has hecho, pero yo me he perdido un poco con lo de las horas).
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:20.