none
PROBLEMA EN CONSULTA RRS feed

  • Pregunta

  • Hola, tengo el siguiente problema.

    Tengo la necesidad de obtener información de 3 tablas distintas, hasta ahí todo bien. El problema es que me trae varios registros de la misma orden (campo ore_idorden) y solo requiero que me traiga 1 solo registro por cada cambio en (ore_idorden). Alguna sugerencia?

    Pongo el Script abajo.

    SELECT A.ORE_IDORDEN,A.ORE_FECHAORD,A.ORE_FECHACIE,A.ORE_HORAORD,A.ORE_HORACIE,'CLAV_DIST' AS 'CLAV DIST',ORD_CLASIFIC ,ORD_DESCRIP FROM SER_ORDEN AS A INNER JOIN SER_ORDENDET AS B ON B.ORD_IDORDEN=A.ORE_IDORDEN AND ORE_STATUS='I' INNER JOIN ADE_VTAFI ON VTE_REFERENCIA1=A.ORE_IDORDEN AND VTE_STATUS='I'
    WHERE VTE_FECHOPE LIKE ('%12%2020') AND ORD_CLASIFIC NOT IN ('RE','LV','VA','MOD','RED')

    jueves, 11 de febrero de 2021 18:35

Todas las respuestas

  • Cuando haces un JOIN de varias tablas, se devuelven todas las combinaciones de registros que cumplan el criterio de unión. Es decir, si un registro de una tabla se une con tres registros de otra, pues entonces te devuelve las tres combinaciones. Si solo querías una de esas tres, no vale con decir "solo quiero que me traiga 1". Hace falta saber cuál de los tres es el que quieres que te traiga. ¿Cuál es el criterio que aplicas para decidir cuál de ellos quieres?

    También puede ser que no quieras unir las tablas, sino que quieres devolver el registro de una tabla con la condición de que exista concordancia en las otras. En ese caso, no tendrías que escribir un JOIN, sino que harías una sentencia del tipo "Select ... from tabla 1 WHERE EXISTS (... comparar aquí con tabla2 ...). Esto también se puede hacer con un left join y comparando con null, pero suele ser más fácil de entender el exists.

    La cuestión en cualquiera de los dos casos es que se necesita conocer el criterio para determinar qué es lo que hay que devolver. No es suficiente con decir que quieres información de 3 tablas y que solo quieres 1 registro. Hay que saber cuál es el criterio para decidir cuál es el registro que se quiere devolver cuando las 3 tablas son capaces de generar más de uno.

    jueves, 11 de febrero de 2021 19:07