Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Utilización de Join en FireBird (https://www.clubdelphi.com/foros/showthread.php?t=43154)

Arim 03-05-2007 17:01:57

Utilización de Join en FireBird
 
Hola a todos.

Estoy incursionando en FireBird y tengo un problemita :D con la siguiente consulta:

select articulos.articulo_id, articulos.nombre,
articulos.unidad_venta, precios_articulos.precio, exis_arti.Exis, lineas_articulos.nombre, grupos_lineas.nombre
from articulos LEFT JOIN (lineas_articulos LEFT JOIN grupos_lineas ON lineas_articulos.grupo_linea_id=grupos_lineas.grupo_linea_id )
ON articulos.linea_articulo_id =lineas_articulos.linea_articulo_id
LEFT JOIN precios_articulos ON articulos.articulo_id = precios_articulos.articulo_id
left JOIN (SELECT SUM(ENTRADAS_UNIDADES), SUM(SALIDAS_UNIDADES),
SUM(ENTRADAS_COSTO), SUM(SALIDAS_COSTO), saldos_in.articulo_id art_id,
(SUM(ENTRADAS_UNIDADES)-SUM(SALIDAS_UNIDADES)) Exis
FROM SALDOS_IN
GROUP BY saldos_in.articulo_id ) as exis_arti
on articulos.articulo_id= exis_arti.art_id

Lo que pasa aquí es que estoy utilizando una subconsulta y la nombro con con alias como exis_arti y necesito usar los campos de esa consulta en la que la contiene pero me marca este error:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid command.
COLUMN 1 is specified without a name.

Yo lo he trabajado así en sql server y no hay problema.

Si alguien me pudíera ayudar agradecería mucho por que estoy bien atorada :eek: .

Gracias...

gluglu 03-05-2007 17:23:50

No me he puesto a analizar la consulta más a fondo .... pero no falta un 'Select' ?

Código SQL [-]
Select articulos.articulo_id, articulos.nombre,
articulos.unidad_venta, precios_articulos.precio, exis_arti.Exis, lineas_articulos.nombre, grupos_lineas.nombre
from articulos
LEFT JOIN (Select ..... from lineas_articulos
    LEFT JOIN grupos_lineas
    ON lineas_articulos.grupo_linea_id = grupos_lineas.grupo_linea_id )
  ON articulos.linea_articulo_id = lineas_articulos.linea_articulo_id
LEFT JOIN precios_articulos
  ON articulos.articulo_id = precios_articulos.articulo_id
left JOIN (SELECT SUM(ENTRADAS_UNIDADES), SUM(SALIDAS_UNIDADES),
SUM(ENTRADAS_COSTO), SUM(SALIDAS_COSTO), saldos_in.articulo_id art_id,
(SUM(ENTRADAS_UNIDADES)-SUM(SALIDAS_UNIDADES)) Exis
FROM SALDOS_IN
GROUP BY saldos_in.articulo_id ) as exis_arti
on articulos.articulo_id= exis_arti.art_id

Arim 03-05-2007 17:40:58

No, no le falta el select, toda la consulta funciona bien solo me truena cuando le agrego la consulta de existencias, la exis_arti, al poner un campo de esta marca el error. Hice una vista con la consulta de existencias, pero como esta consulta debe ejecutarse en versiones de la bases de datos tendría que hacer la vista en cada una de ellas. Lo que yo hacia era poner el código de la subconsulta y nombrarla con un alías así no la perdía y podía utilizarla.


La franja horaria es GMT +2. Ahora son las 18:27:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi