Visual Basic - Pregunta Sencilla, PERO ME CONFUNDO

Life is soft - evento anual de software empresarial
 
Vista:

Pregunta Sencilla, PERO ME CONFUNDO

Publicado por Eduardo Yuptón C (96 intervenciones) el 19/07/2005 18:12:21
HOLA, como hago para obtener 1 solo registro a partir de cada pareja de registros donde hay un campo que tienen datos que cambia y los demàs son iguales.

Necesito la consulta SQL por favor. MUCHAS GRACIAS. O si no se puede por consulta como debo hacerlo ya que sòlo dispongo de la primera tabla.

ejemplo: tengo esto en la tabla

CODIGO NOMBRE TIPO HORA
======= ======== ===== ======
SH3622 MARIA INGRESO 08:00 a.m.
SH3622 MARIA ESGRESO 01:20 p.m.
GD4735 JOSE INGRESO 08:10 a.m.
GD4735 JOSE ESGRESO 01:13 p.m.
KR9963 JESUS INGRESO 07:56 a.m.
KR9963 JESUS ESGRESO 01:10 p.m.

Deseo obtener esto en una consulta o como se pueda:

CODIGO NOMBRE INGRESO EGRESO
======= ======== ======== ========
SH3622 MARIA 08:00 a.m. 01:20 p.m.
SH3622 JOSE 08:10 a.m. 01:13 p.m.
GD4735 JESUS 07:56 a.m. 01:10 p.m.

MUCHAS GRACIAS

ATENTAMENTE, EDUARDO YC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 14
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Pregunta Sencilla, PERO ME CONFUNDO

Publicado por SuNcO (599 intervenciones) el 19/07/2005 19:23:54
Intentaste con SELECT DISTINCT ?

SELECT DISTINCT nombre, codigo, ingreso, egreso from tabla...

No se com oel DISTINCT funcione con * pero se puede ver la documentacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: ESTA NO ES LA SOLUCION, AYUDENME

Publicado por Eduardo Yuptón C (96 intervenciones) el 19/07/2005 22:02:13
YA HE PROBADO CON ESTO Y NADA, LO QUE ESTOY SOLICITANDO ES UNA CONSULTA U OTRA FORMA DE OBTENER UNA NUEVA ESTRUCTURA A PARIR DE UNA TABLA, SEGUN SUS DATOS. REVISAR LA PREGUNTA

MUCHAS GRACIAS

EN CUANTO LO ENCUENTRE LO COMPARTO CON TODOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta Sencilla, PERO ME CONFUNDO

Publicado por Nerio (8 intervenciones) el 21/07/2005 19:40:56
Eduardo no se mucho pero te voy a dar mi opinión a ver se te sirve de algo:
primero, la tabla donde sale el codigo el nombre, la accion y la hora no esta normalizada, deberia existir dos tablas , una donde se encuentre el nombre con su codigo (Ejemplo: Tabla "Usuario"), otra donde esten los registros de ingreso y salida (Ejemplo Tabla "Control"),
ok, donde la tabla usuario tenga una relación identificadora a la tabla control, donde esta última sea una entidad dependiente (es decir depende de la tabla usuario para ser identificada) donde dicha relación debe de ser 1:N
(Disculpa si esto ya lo sabias)

Ejemplo:

usuario
nombre
codigo (PK)

control
Codigo (PK y FK)
horaSalida
horaEntrada

despues de tener esta tabla efectuas su diagrama de relación es muy sencillo si usas SQL Server o Access(este último tiene hasta un asistente)
luego de que tienes tu tablas relacionadas efectua esta consulta:

Select usuario.codigo, usuario.nombre, control.horaEntrada as Ingreso, control.horaSalida as Egreso from usuario inner join control on usuario.codigo = control.usuario

si te da un problema prueba con

Select usuario.codigo, usuario.nombre, control.horaEntrada, control.horaSalida from usuario inner join control on usuario.codigo = control.usuario

Pero recuerda para que esto funcione deben estar bien las relaciones entre las tablas

Espero que te sirva de lago esto

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta Sencilla, PERO ME CONFUNDO

Publicado por Helping (5 intervenciones) el 21/07/2005 20:33:12
Mira, no estoy seguro, pero si es en access puedes hacer una consulta de referencias cruzadas. Incluso el asistente te lo hace mas fácil.
Si es Sql Server u otro motor puedes usar cursores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta Sencilla, PERO ME CONFUNDO

Publicado por ricardo (3 intervenciones) el 21/07/2005 23:22:17
consulta1:
SELECT Tabla1.nombre, Tabla1.hora AS ingreso
FROM Tabla1
WHERE (((Tabla1.tipo)="ingreso"))
GROUP BY Tabla1.nombre, Tabla1.hora;

consulta2:
SELECT Tabla1.nombre, Tabla1.hora AS ingreso
FROM Tabla1
WHERE (((Tabla1.tipo)="egreso"))
GROUP BY Tabla1.nombre, Tabla1.hora;

SELECT Consulta1.nombre, Consulta1.ingreso, consulta2.ingreso
FROM Consulta1 INNER JOIN consulta2 ON Consulta1.nombre = consulta2.nombre;

esto es lo mas sencillo que encontre para hacer eso que tu quieres espero que te funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NADA DE NADA... AUXILIOOOOO

Publicado por Eduardo Yuptón C (96 intervenciones) el 22/07/2005 00:44:51
HE HECHO ESTO Y NADA DE NADA, POR AHORA NO ME IMPORTA LA NORMALIZACION, LUEGO LO VERE.

EN UN FORMULARIO HE COLOCADO UN CONTROL ADO

HE PROGRAMADO LA CONEXION EN FORM_LOAD

HE AGREGADO ESTOS CONTROLES: ADODC1, DATAGRID1, COMMAND1

HE PROGRAMADO EN COMMAND1

Private Sub Command1_Click()

SQL1 = "select NOMBRE, HORA AS INGRESO from RELOJ where (TIPO='INGRESO') group by NOMBRE,HORA"

SQL2 = "select NOMBRE, HORA AS EGRESO from RELOJ where (TIPO='EGRESO') group by NOMBRE,HORA"

SQL = "SELECT SQL1.NOMBRE, SQL1.FOTOCHECK, SQL1.INGRESO, SQL2.EGRESO FROM SQL1 INNER JOIN SQL2 ON SQL1.FOTOCHECK=SQL2.FOTOCHECK"

‘ PERO NO SE PUEDE POR QUE ES UN ABSURDO METER VARIABLES EN UNA CADENA CERRADA PERO LO PONGO PARA QUE SE DEN CUENTA LO QUE QUIERO.

Ado.RecordSource = SQL
Ado.Refresh

End Sub

LA PREGUNTA INICIAL ERA:

NOMBRE TIPO HORA
======== ===== ======
MARIA INGRESO 08:00 a.m.
MARIA EGRESO 01:20 p.m.
JOSE INGRESO 08:10 a.m.
JOSE EGRESO 01:13 p.m.
JESUS INGRESO 07:56 a.m.
JESUS EGRESO 01:10 p.m.

Deseo obtener esto en una consulta:

NOMBRE INGRESO EGRESO
======== ======== ========
MARIA 08:00 a.m. 01:20 p.m.
JOSE 08:10 a.m. 01:13 p.m.
JESUS 07:56 a.m. 01:10 p.m.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NADA DE NADA... AUXILIOOOOO

Publicado por Helping (79 intervenciones) el 22/07/2005 15:26:59
Abre un cursor y listo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Prueba Creando COnsultas

Publicado por Samuel (22 intervenciones) el 22/07/2005 19:11:36
Te sugiero que crees 3 consultas.....

CON001:
SELECT * FROM RELOJ WHERE tipo = 'INGRESO'

CON002:
SELECT * FROM RELOJ WHERE tipo = 'EGRESO')

CONFINAL:
SELECT CON001.nombre, CON001.hora AS INGRESO, CON002.hora AS EGRESO FROM CON001 INNER JOIN CON002 ON CON001.nombre = CON002.nombre

para el ejemplo que planteas funciona..... pero no se cuantos registros tienss....

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar