• Martes 31 de Marzo de 2020, 08:06

Autor Tema:  Consulta Entre Dos Tablas  (Leído 2505 veces)

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Consulta Entre Dos Tablas
« en: Martes 14 de Agosto de 2007, 21:55 »
0
Hola tengo una pregunta, espero que puedan ayudarme.
No me sale la siguiente consulta:
(les pongo un ejemplo para que se entienda)
Hay dos tablas.
En la primera (Clientes) tengo guardados los datos de 10 clientes.
En la segunda (Pedidos) estan los datos de los pedidos que hacen estos clientes (por ej. cod. articulo y fecha)

Yo lo que necesitaria saber es cual fue el ultimo pedido que hizo cada uno basandome en la fecha.
O sea me tendria que traer 10 registros "Pedidos", uno por cliente, y que cada pedido sea el que tiene la fecha mas
proxima a la actual.

Estoy intentando con subconsultas pero todavia no di en la justa.

Saludos.

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta Entre Dos Tablas
« Respuesta #1 en: Martes 14 de Agosto de 2007, 21:57 »
0
Por si sirve de ayuda las tablas podrian ser de las sig. manera

Clientes
idcliente


Pedidos
idpedido
idcliente
fechapedido
descpedido

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Consulta Entre Dos Tablas
« Respuesta #2 en: Martes 14 de Agosto de 2007, 22:29 »
0
Tienes en la tabla cliente: codigo, nombre,apellido
pedido: codcliente,codproducto,fecha_pedido,cantidad.
bueno siendo asi te pongo la sig. consulta.
Código: Text
  1.  
  2. Select   max(p.fecha_pedido)
  3.           , pr.codigo
  4.           , c.cliente
  5. From cliente    c
  6.       , producto pr
  7.       , pedido    p
  8. Where c.codigo   = p.codcliente
  9.     and pr.codigo  = p.codproducto
  10. GROUP BY max(p.fecha_pedido)
  11.               ,pr.codigo
  12.               ,c.cliente
  13.  
Espero te sirva de ayuda..

 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta Entre Dos Tablas
« Respuesta #3 en: Miércoles 15 de Agosto de 2007, 14:48 »
0
Hola, gracias por la ayuda, pero me salio el siguiente error
"No se pueden usar agregados ni subconsultas en las expresiones de la lista de agrupación de la cláusula GROUP BY."

Voy a poner datos mas reales que tiene mi tabla, quiza queda mas claro para el que me pueda ayudar.
Una tabla se llama PDV (punto de venta), vendria a ser algo asi como sucursales. Y los datos que me sirven de ahi son:

Tabla PDV
Código: Text
  1.  
  2. IdPDV    Nombre
  3. 902        NombrePDV902
  4. 905        NombrePDV905
  5.  
  6.  
... y asi son 28 en total.

Por otro lado tengo otra tabla que se llama BackupPDV en donde se lleva un registro de cuando envió cada sucursal el backup hacia la oficina central.

Tabla BackupPDV
Código: Text
  1.  
  2. Id IdPDV FechaBackup         FechaIngreso          Observacion
  3. 2   911  2000-07-15 00:00:00  2007-07-15 00:00:00  ok
  4. 3   917  2000-07-15 00:00:00  2007-07-15 00:00:00  ok
  5. 4   926  2007-07-15 00:00:00  2007-07-15 00:00:00  ok
  6. 5   I15  2000-07-15 00:00:00  2007-07-15 00:00:00  ok
  7. 6   I20  2007-07-15 00:00:00  2007-07-15 00:00:00  ok
  8. 8   I40  2007-07-15 00:00:00  2007-07-15 00:00:00  ok
  9. 9   I50  2000-07-15 00:00:00  2007-07-15 00:00:00  ok
  10.  
  11.  
... puede que algun PDV todavia no haya enviado nada aun.

Y la aplicacion hecha en c# tiene que mostrar en una grilla en la pantalla principal los 28 PDV distintos y el ultimo backup enviado por cada uno.
Si alguno no envio nada mostrar el nombre del pdv y por lo menos todo en vacio o null.

Actualmente, y para salir del paso, a la tabla backupPDV le agregue un campo mas que indica si es el ultimo backup (1 o 0). Cada vez que se ingresa un nuevo registro
se ingresa con el valor 1 y al que tenia 1 se le pone un 0. Pero esto me esta trayendo algunos problemas.

Bueno, saludos!!

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta Entre Dos Tablas
« Respuesta #4 en: Miércoles 15 de Agosto de 2007, 21:28 »
0
Finalmente logre hacer lo que queria. (todavia lo estoy probando, espero que funcione bien!!)
La consulta seria la siguiente:
Código: Text
  1.  
  2. SELECT MAX (BackupPDV.FechaBackup),PDV.idPDV
  3. FROM BackupPDV RIGHT JOIN PDV ON BackupPDV.idPDV = PDV.idPDV
  4. GROUP BY BackupPDV.idPDV, PDV.idPDV
  5.  
  6.  


Modificacion:
definitivamente lo tendria que haber probado mejor. Asi como esta la consulta funciona bien pero cuando quiero agregarle el campo Observacion me sale lo siguiente:
Código: Text
  1.  
  2. La columna 'XXX_BackupPDV.Observacion' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.
  3.  
  4.  
Si lo agrego al GROUP BY me trae cualquier cosa.


Saludos!