Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/10/2011, 18:59
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: marca error de alias

Estás llamando dos veces a la tabla DESC_PROV sin asignarle un alias. Ese alias no es el que va en el SELECT sino el que debe ir en el FROM, cuando realizas una doble invocación a la misma tabla.
Cuando llamas dos o más veces una misma tabla en el FROM debes obligatoriamente ponerles alias diferentes, o de lo contrario MySQL no sabrá a cuál invocación te estás refiriendo...
Código MySQL:
Ver original
  1.     REMD.NO_REM,
  2.     REMD.SUC_REM,
  3.     REMD.CSE_PROD,
  4.     REMD.CVE_PROD,
  5.     PRO_DESC.DESC1 as descr,
  6.     REMD.UNIDAD,
  7.     REMD.CANT_SURT,
  8.     REMD.VALOR_PROD,
  9.     REMD.DESCU_PROD,
  10.     REMD.SUBT_PROD,
  11.     REMC.STATUS_REM,
  12.     REMC.FALTA_REM,
  13.     SUCURSAL.SUCURSAL,
  14.     PRODUCTO.CTO_ENT AS ctoentra,
  15.     COSTEOC.COSTO_UNI AS costuni,
  16.     COSTEOS.STATUS,
  17.     DP1.NO_FACC as fact,
  18.     DP2.SUBTOTAL AS subt,
  19.     COMPRAS.CANT_SURT AS surt,
  20.     COMPRAS.NO_FACC as comfact
  21.     FROM REMD
  22.     LEFT JOIN SUCURSAL on REMD.SUC_REM=SUCURSAL.CVE_SUC
  23.     LEFT JOIN PRO_DESC on REMD.CVE_PROD=PRO_DESC.CVE_PROD
  24.     LEFT JOIN REMC on REMD.NO_REM=REMC.NO_REM
  25.     LEFT JOIN PRODUCTO on REMD.CVE_PROD=PRODUCTO.CVE_PROD
  26.     LEFT JOIN COSTEOC ON REMD.CVE_PROD=COSTEOC.CVE_PROD
  27.     LEFT JOIN COSTEOS on COSTEOC.NO_COSTEO=COSTEOS.NO_COSTEO
  28.     LEFT JOIN DESC_PROV DP1 ON REMD.CVE_PROD=DP1.CVE_PROD
  29.     LEFT JOIN COMPRAS ON REMD.CVE_PROD=COMPRAS.CVE_PROD
  30.     LEFT JOIN DESC_PROV DP2 ON COMPRAS.NO_FACC=DP2.NO_FACC
  31.     WHERE REMD.SUC_REM='MER' AND REMC.FALTA_REM BETWEEN '2010-09-01' AND '2010-09-30'  AND COSTEOS.STATUS='Activo' AND REMC.STATUS_REM='Facturada' OR 'Emitida'
  32.     ORDER BY REMD.CSE_PROD

Aunque estimo que lo que realmente está sucediendo en el caso es que la relación de esa tabla con el resto es a través de dos campos, caso en el cual no debes llamarla dos veces, sino indicar en el ON ambos campos:

Código MySQL:
Ver original
  1.     REMD.NO_REM,
  2.     REMD.SUC_REM,
  3.     REMD.CSE_PROD,
  4.     REMD.CVE_PROD,
  5.     PRO_DESC.DESC1 as descr,
  6.     REMD.UNIDAD,
  7.     REMD.CANT_SURT,
  8.     REMD.VALOR_PROD,
  9.     REMD.DESCU_PROD,
  10.     REMD.SUBT_PROD,
  11.     REMC.STATUS_REM,
  12.     REMC.FALTA_REM,
  13.     SUCURSAL.SUCURSAL,
  14.     PRODUCTO.CTO_ENT AS ctoentra,
  15.     COSTEOC.COSTO_UNI AS costuni,
  16.     COSTEOS.STATUS,
  17.     DP1.NO_FACC as fact,
  18.     DP2.SUBTOTAL AS subt,
  19.     COMPRAS.CANT_SURT AS surt,
  20.     COMPRAS.NO_FACC as comfact
  21.     FROM REMD
  22.     LEFT JOIN SUCURSAL on REMD.SUC_REM=SUCURSAL.CVE_SUC
  23.     LEFT JOIN PRO_DESC on REMD.CVE_PROD=PRO_DESC.CVE_PROD
  24.     LEFT JOIN REMC on REMD.NO_REM=REMC.NO_REM
  25.     LEFT JOIN PRODUCTO on REMD.CVE_PROD=PRODUCTO.CVE_PROD
  26.     LEFT JOIN COSTEOC ON REMD.CVE_PROD=COSTEOC.CVE_PROD
  27.     LEFT JOIN COSTEOS on COSTEOC.NO_COSTEO=COSTEOS.NO_COSTEO
  28.     LEFT JOIN DESC_PROV DP1 ON (REMD.CVE_PROD=DESC_PROV.CVE_PROD AND COMPRAS.NO_FACC=DESC_PROV.NO_FACC)
  29.     LEFT JOIN COMPRAS ON REMD.CVE_PROD=COMPRAS.CVE_PROD
  30.     WHERE REMD.SUC_REM='MER' AND REMC.FALTA_REM BETWEEN '2010-09-01' AND '2010-09-30'  AND COSTEOS.STATUS='Activo' AND REMC.STATUS_REM='Facturada' OR 'Emitida'
  31.     ORDER BY REMD.CSE_PROD
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)