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

Donde esta el error??

Estas en el tema de Donde esta el error?? en el foro de Bases de Datos General en Foros del Web. Hola, llevo varios dias descifrando esta consulta que me paso un compañero del foro, y da un error pero esque es fundamental que funcione. me ...
  #1 (permalink)  
Antiguo 21/02/2011, 06:06
 
Fecha de Ingreso: febrero-2010
Mensajes: 157
Antigüedad: 14 años, 9 meses
Puntos: 5
Donde esta el error??

Hola, llevo varios dias descifrando esta consulta que me paso un compañero del foro, y da un error pero esque es fundamental que funcione. me ayudais???

Gracias

Código HTML:
SELECT ID, id_proveedor, producto, precio, stockFROM     
(        
(           
 SELECT ID, MIN(PRECIO) AS PRE
            FROM TARIFAS
            WHERE STOCK > 0
            GROUP BY ID
        )        
UNION        
(            
SELECT TA1.ID, TA1.MIN(PRECIO) AS PRE
            FROM TARIFAS TA1
            EXCEPTION JOIN TARIFAS TA2 ON
            TA1.ID = TA2.ID
            WHERE TA2.STOCK > 0
            GROUP BY ID
        )
    ) 

T1INNER JOIN TARIFAS TAR ONT1.ID = TAR.ID AND T1.PRE = TAR.PRECIO





  #2 (permalink)  
Antiguo 21/02/2011, 06:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Donde esta el error??

Bueno, ,si hiciste un Copy+Paste de lo que tienes, has pegado las cláusulas a las sentencias, es decir, no dejas espacio entre "stock" y "FROM", por ejemplo.
Prueba:
Código SQL:
Ver original
  1. SELECT ID, id_proveedor, producto, precio, stock
  2. FROM
  3.   (
  4.     (SELECT
  5.         ID,
  6.         MIN(PRECIO) PRE
  7.     FROM TARIFAS
  8.     WHERE STOCK > 0
  9.     GROUP BY ID
  10.     )
  11.     UNION
  12.     (SELECT
  13.         TA1.ID,
  14.         MIN(TA1.PRECIO) PRE
  15.     FROM
  16.         TARIFAS TA1
  17.         EXCEPTION JOIN TARIFAS TA2 ON TA1.ID = TA2.ID
  18.     WHERE TA2.STOCK > 0
  19.     GROUP BY ID
  20.     )
  21.   ) T1
  22.   INNER JOIN
  23.   TARIFAS TAR ONT1.ID = TAR.ID AND T1.PRE = TAR.PRECIO
Además, poner "TA1.MIN(PRECIO)" se interpretará como que MIN es campo de TA1, lo que es un error.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/02/2011, 06:28
 
Fecha de Ingreso: febrero-2010
Mensajes: 157
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Donde esta el error??

hola, si, fue un fallo al pegarlo en el foro, sorry, pero en si la consulta da error, lo estoy poniendo en acces y da fallo en la union dice?? nose por donde cojerla
  #4 (permalink)  
Antiguo 21/02/2011, 06:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Donde esta el error??

Bueno... Access no es un DBMS realmente (el DBMS de Microsoft es SQL Server), por lo que los recursos de SQL que tiene incrustados son muy limitados y no interpreta bien algunas sentencias mas o menos complejas, como la que quieres hacer.
Por otro lado, sino nos postas qué error te da, nosotros no podemos adivinarlo. Pueden ser muchas cosas distintas.

Espera que te ayude alguien más experto en Access. Yo habitualmente no lo uso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/02/2011, 09:44
 
Fecha de Ingreso: febrero-2010
Mensajes: 157
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Donde esta el error??

gracias, si alguien de acces me echa una mano..
  #6 (permalink)  
Antiguo 21/02/2011, 14:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Donde esta el error??

Hola yeyowave:

Hace ya bastante tiempo que dejé de utilizar ACCESS, pues tal como comenta gnzsoloyo no es un DBMS. Sin embargo no recuerdo que ACCESS soportara un EXCEPTION JOIN (este es si no mal recuerdo para DB2, corrígeme si estoy equivocado), deberías de comenzar por revisar que las subconsultas funcionen antes de realizar la unión. Segundo, veo varios detalles en la consulta que también tendrías que revisar, por ejemplo, tienes lo siguiente:

Código:
SELECT TA1.ID, TA1.MIN(PRECIO) AS PRE
Esto debería de marcar error, ya que el segundo campo, donde estás utilizando la función MIN debería quedar así:

Código:
SELECT TA1.ID, MIN(TA1.PRECIO) AS PRE
Finalmente, no termino de entender qué es lo que estás tratando de obtener, ya que todas tus consultas las haces sobre una sola tabla (TARIFAS). Igual y sería conveniente que comenzaras por explicarnos cómo es la estructura de tu tabla, que nos pusieras algunos datos de ejemplo y que nos dijeras qué es lo que estás esperando de salida. Es posible que exista alguna otra manera más fácil de llegar al resultado esperado.

Saludos
Leo.
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 14:19.