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

consulta complicada

Estas en el tema de consulta complicada en el foro de Bases de Datos General en Foros del Web. Hola a todos, estoy haciendo una consulta usando access y este es el código SQL de la consulta, pero ahora quiero que esos dos dígitos ...
  #1 (permalink)  
Antiguo 23/03/2005, 06:20
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
consulta complicada

Hola a todos, estoy haciendo una consulta usando access y este es el código SQL de la consulta, pero ahora quiero que esos dos dígitos que me aparecen en CliCoPo pueda compararlos con el campo CODProvincia de la tabla dbo_Provincia que también es un campo de dos dígitos y al compararlos, cuando coincidan mostrar el nombre que hay en el campo Nombre de la tabla dbo_Provincia.
Alguien puede ayudarme, no me sale y no se como hacerlo. Os pongo el código.
Saludos

SELECT Left([CliCoPo],2) AS Expr2, Count(*) AS Expr1
FROM dbo_Provincia, EXPEDIC INNER JOIN tblClientes ON EXPEDIC.EXPDCOD = tblClientes.CliCodi
GROUP BY Left([CliCoPo],2), EXPEDIC.EXPANNO, tblClientes.CliPais
HAVING (((EXPEDIC.EXPANNO)=2004) AND ((tblClientes.CliPais)="ES"))
ORDER BY Left([CliCoPo],2);
  #2 (permalink)  
Antiguo 23/03/2005, 06:53
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 19 años, 2 meses
Puntos: 5
Consulta de Access

Mira, te puedo echar una mano, pero la forma que yo tengo de hacer las consultas es un poco diferente a la que toma access, es decir, no lo decoro tanto. Si puedes poner las tablas de la base de datos que vas a utilizar, y decirme que es lo que quieres exactamente, te puedo hacer una consulta nueva en SQL que funcione en access
  #3 (permalink)  
Antiguo 23/03/2005, 07:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
que te pongo los campos de las tablas?
  #4 (permalink)  
Antiguo 23/03/2005, 08:08
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 19 años, 2 meses
Puntos: 5
Consulta de Access

Los campos de las tablas que quieres utilizar y me tienes que decir que quieres que te aparezca. Por ejemplo el campo tal de la tabla tal, pero solo los registros que cumplan esta condicion, etc.
  #5 (permalink)  
Antiguo 23/03/2005, 09:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
Mira tengo dos tablas:
EXPEDIC y tblClientes;
el campo EXPDCOD de EXPEDIC ser relaciona con el campo CliCodi de tblClientes.
Luego he agrupado por los dos primero dígitos de CliCoPo, que es un campo de tblClientes que tiene codigos postales. También he agrupado por el campo EXPANNO de la tabla EXPEDIC para que me agrupe el año 2004.
Espero que lo hayas entendido hasta ahora.

Luego hay otra tabla que es dbo_Provincia con 3 campos (CODPais, CODProvincia y Nombre). CODPRovincia es un campo de 2 dígitos que se corresponden con los dos primeros dígitos del código postal de las provincias de españa.

Yo lo que quiero es comparar ese campo CODProvincia con los dos dígitos que he sacado de CliCoPo (campo de EXPEDIC) y quiero compararlos para poder sacar en la consulta lo siguiente:

Los dos dígitos de CliCoPo, la suma de los clientes de esa provincia y el nombre de la provincia.

Espero haberme explicado bien, si no es así, dímelo para que trate de hacerlo mejor.

Muchas gracias.
  #6 (permalink)  
Antiguo 23/03/2005, 09:50
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 19 años, 2 meses
Puntos: 5
Consulta de Access

Si he entendido bien la consulta que quieres hacer, creo que seria algo asi:

SELECT dbo_provincia.nombre, count(tbclientes.clicodi) from dbo_provincia, tbclientes, expedic where expedic.expdcod = tbclientes.clicodi and expedic.expanno = 2004 and tbclientes.clicopo = dbo_provincia.codprovincia group by dbo_provincia.nombre

Lo dicho si no he entendido mal, quedaria algo asi. Si necesitas mas ayuda dimelo o entra en www.forodetodo.es.mw y te echare una mano
  #7 (permalink)  
Antiguo 23/03/2005, 09:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
voy a probarlo ahora mismo
por cierto como puedo obtener un resultado de la división de un campo por otro de la misma tabla, pero campos diferentes.

gracias
  #8 (permalink)  
Antiguo 23/03/2005, 10:24
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 19 años, 2 meses
Puntos: 5
Consulta de Access

No lo se con seguridad, porque hace tiempo que no hago eso, pero creo que era poniendo el ne select campo1/campo2 as expresion from ...

Si te funciona avisame, sino tambien. Si en otro momento quieres que te heche una mano, estoy haciendo un foro que es www.forodetodo.es.mw para ayudar a todo el que lo pida.
  #9 (permalink)  
Antiguo 28/03/2005, 03:29
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
JBalde tu consulta no me sale, me pide que meta una provincia, me sale:

Introduzca el valor del parámetro

dbo_provincia:
_______________________

no se si me he explicado mal, trato de hacerlo de nuevo.
yo tengo exa esta consulta por si te ayuda:

SELECT Left([CliCoPo],2) AS Expr2, Count(*) AS Expr1, EXPEDIC.EXPANNO, tblClientes.CliPais, Sum(EXPEDIC.EXPKILO) AS SumaDeEXPKILO, Sum(EXPEDIC.EXPBULT) AS SumaDeEXPBULT, (SumaDeEXPKILO/SumaDeEXPBULT) AS Expr3
FROM dbo_Provincia, EXPEDIC INNER JOIN tblClientes ON EXPEDIC.EXPDCOD = tblClientes.CliCodi
GROUP BY Left([CliCoPo],2), EXPEDIC.EXPANNO, tblClientes.CliPais
HAVING (((EXPEDIC.EXPANNO)=2004) AND ((tblClientes.CliPais)="ES"))
ORDER BY Left([CliCoPo],2);

Tablas:
EXPEDIC (EXPCOD, EXPANNO, EXPKILO, EXPBULT)
tblClientes (CliCodi, CliCoPo, CliPais)
dbo_Provincia (CODPais, CODProvincia, Nombre)

Yo enlazo EXPEDIC con tblClientes a través de EXPCOD y CliCodi y quiero enlazar tblClientes y dbo_Provincia de la siguiente forma:
CliCoPo con CODProvincia, pero son campos distintos, CliCoPo es de 5 dígitos y CODProvincia de 2, pero los dos primero de CliCoPo coinciden con CODProvincia. Y quiero enlazarlos para poner a todos los códigos de CliCoPo el nombre de la provincia con el campo Nombre de la tabla dbo_Provincia.

Espero haberme explicado mejor. Muchas gracias.


ten en cuenta que yo quiero enlazar la tabla tblClientes con la dbo_Provincia a través de estos campos
  #10 (permalink)  
Antiguo 28/03/2005, 03:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
perdona, se ha cortado antes: a través de estos campos, CliCoPo y CODProvincia.

Saludos
  #11 (permalink)  
Antiguo 28/03/2005, 05:17
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 19 años, 2 meses
Puntos: 5
Consulta de Access

Ahora creo que he entendido lo que quieres hacer, quieres hacer el select para usar el nombre de las provincias en funcion de la tabla que no lo tiene. No estoy seguro de que se pueda hacer, por eso voy a probarlo en Access y luego te digo si sale o no, al final si se ha convertido en una consulta complicada. En cuanto lo tenga si es que se puede hacer te lo dejo aqui puesto
  #12 (permalink)  
Antiguo 28/03/2005, 05:37
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
muchas gracias por todo
  #13 (permalink)  
Antiguo 28/03/2005, 18:56
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 19 años, 2 meses
Puntos: 5
Consulta de Access

Creo que esto es lo que quieres hacer, pero no estoy muy seguro.

SELECT Left(tblClientes.CliCoPo,2) AS Provincia, Count(*) AS Contador, EXPEDIC.EXPANNO, tblClientes.CliPais, Sum(EXPEDIC.EXPKILO) AS SumaDeEXPKILO, Sum(EXPEDIC.EXPBULT) AS SumaDeEXPBULT, (SumaDeEXPKILO/SumaDeEXPBULT) AS Expr3
FROM dbo_Provincia, EXPEDIC, tblClientes WHERE EXPEDIC.EXPDCOD = tblClientes.CliCodi AND dbo_Provincia.CODProvincia = Provincia GROUP BY Provincia, EXPEDIC.EXPANNO, tblClientes.CliPais
HAVING (((EXPEDIC.EXPANNO)=2004) AND ((tblClientes.CliPais)="ES"))
ORDER BY Provincia);

Creo que seria asi, lo que he hecho es modificar tu consulta diciendo que la tabla de expedic y tblclientes se relacionan por el codigo del clientes y la tabla de dbo_provincia con tblclientes se relacionan por el campo codprovincia que son 2 digitos y el nuevo campo solo existente en la consulta Provincia que es los dos primeros digitos del campo clicopo de tblclientes.

Si no es definitivo dimelo e intentare buscar el fallo, si si lo fuera pues decite que si alguna vez tienes alguna duda de informatica postea en www.forodetodo.es.mw y te contestare encantado
  #14 (permalink)  
Antiguo 29/03/2005, 00:48
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
muchas gracias por tu ayuda JBalde, ayer conseguí solucionarlo pero veré tu opción porque está más optimizada y yo cree dos consultas en access.
Ya me he dado de alta en forodetodo y seguramente me verás por ahí.

Muchas gracias de nuevo de verdad
  #15 (permalink)  
Antiguo 29/03/2005, 08:12
Avatar de JBalde  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 118
Antigüedad: 19 años, 2 meses
Puntos: 5
Consulta de Access

Ha sido un placer ayudarte. Nadie nace sabiendo y todo el mundo en mayor o menor medida necesita una pequeña ayuda. Yo tambien he aprendido ayudandote porque he descubierto una setencia SQL que desconocia que es LEFT y RIGHT, y eso que me considero un experto en el lenguaje SQL y administracion de todo tipo de bases de datos. Si tienes mas dudas hay tienes mi foro y te ayudare con lo que pueda.
  #16 (permalink)  
Antiguo 29/03/2005, 10:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 392
Antigüedad: 20 años, 7 meses
Puntos: 1
muchas gracias, ya nos veremos
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 23:46.