none
como puedo hacer esta sentencia que en ORACLE funciona RRS feed

  • Pregunta

  • select * from (

    select campo1 as alias1, campo2 as alias2 from tabla

    union

    select campo3 as alias1, campo4 as alias2 from tabla2

    )

    where alias1 = 23

    martes, 10 de noviembre de 2015 23:57

Respuestas

  • select * from (

    select campo1 as alias1, campo2 as alias2 from tabla

    union

    select campo3 as alias1, campo4 as alias2 from tabla2

    ) AS A

    where alias1 = 23

    • Propuesto como respuesta Alberto PoblacionMVP miércoles, 11 de noviembre de 2015 10:03
    • Marcado como respuesta Jordan_Col miércoles, 11 de noviembre de 2015 14:35
    miércoles, 11 de noviembre de 2015 0:15

Todas las respuestas

  • select * from (

    select campo1 as alias1, campo2 as alias2 from tabla

    union

    select campo3 as alias1, campo4 as alias2 from tabla2

    ) AS A

    where alias1 = 23

    • Propuesto como respuesta Alberto PoblacionMVP miércoles, 11 de noviembre de 2015 10:03
    • Marcado como respuesta Jordan_Col miércoles, 11 de noviembre de 2015 14:35
    miércoles, 11 de noviembre de 2015 0:15
  • Hola Jordan_Col,

    Podrías hacer lo siguiente:

    WITH CTE (alias1, alias2) AS 
    (
    	SELECT campo1, campo2 FROM tabla
    	UNION
    	SELECT campo3, campo4 FROM tabla2
    )
    SELECT * FROM CTE WHERE (alias1 = 23);

    Pero en cualquier caso, veo ineficiente obtener el universo de los datos para luego realizar el filtro, ¿por qué no realizas el filtro en cada consulta? 

    SELECT campo1, campo2 FROM tabla WHERE (campo1 = 23)
    UNION
    SELECT campo3, campo4 FROM tabla2 WHERE (campo3 = 23)

    miércoles, 11 de noviembre de 2015 2:19
  • como te dice Luis lo único que tienes que hacer es añadir un alias a la subconsulta y asegurarte que campo1 y campo3 tienen el mismo tipo de datos, también tienen que tener el mismo tipo de datos campo2 y campo4, si no lo tienen tendrás que hacer un casting.

    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 11 de noviembre de 2015 7:32
    Moderador
  • muchas gracias, thanks you

    claim a gift

    miércoles, 11 de noviembre de 2015 14:36
  • gracias amigo me desbararon
    miércoles, 11 de noviembre de 2015 14:40
  • Gracias, el union tiene varios campos aproximadamente 12 y cualquiera de esos tendría criterio luego seria creo mas ineficiente en el código comenzar a preguntar si tiene filtro aplíquelo en cada uno de las sentencias Unión son 4 que opinas?
    miércoles, 11 de noviembre de 2015 14:42
  • Hola Jordan_Col,

    ¿Tus consultas son dinámicas? Es decir, ¿dependiendo de alguna situación es que filtras por determinada columna?

    Quizá el tema de escribir la consulta se vuelva tediosa pero en terminos de rendimiento es mejor obtener lo que deseas en una sola llamada a la base de datos.

    Tal vez no este entendiendo del todo lo que intentas realizar, si es posible puedas dejarnos tú código para mencionarte alguna otra posibilidad

    miércoles, 11 de noviembre de 2015 14:49