none
Problema al intentar unir dos consultas RRS feed

  • Pregunta

  • Hola,

    Espero que alguien me pueda ayudar con esto, estoy tratando de unir dos consultas pero no estoy logrando obtener el resultado deseado, probablemente debido a que la segunda consulta es muy compleja.

    La primera consulta es esta:

    SELECT observacion FROM AquActivacion WHERE id=1715092513;

    Esta consulta devuelve un único resultado que quiero que se repita para cada uno de los resultados de la segunda consulta. La segunda consulta es esta:

    SELECT id, numEntrada, usuario, hora, numFactura, numTicket, numReserva FROM AquInternet WHERE(dia BETWEEN '17/07/2018' AND '24/07/2018') AND utilizada= 1 UNION ALL SELECT AE.id, AE.numEntrada,AE.usuario, AE.hora, AA.numFactura, AA.numTicket, AA.numReserva FROM AquActivacion AA INNER JOIN AquEntrada AE ON AA.id = AE.id WHERE (AE.dia BETWEEN '17/07/2018' AND'24/07/2018') AND (AE.utilizada= 1) ORDER BY id, numEntrada

    Entonces, para unir ambas consultas, he tratado de utilizar el siguiente código:

    SELECT AA.observacion, AI.id, AI.numEntrada, AI.usuario, AI.hora, AI.numFactura, AI.numTicket, AI.numReserva FROM AquActivacion AA, AquInternet AI WHERE AA.id=1715092513 AND(AI.dia BETWEEN '17/07/2018' AND '24/07/2018') AND AI.utilizada= 1 UNION ALL SELECT AA.observacion, AE.id, AE.numEntrada,AE.usuario, AE.hora, AA.numFactura, AA.numTicket, AA.numReserva FROM AquActivacion AAINNER JOIN AquEntrada AE ON AA.id = AE.id WHERE (AE.dia BETWEEN '17/07/2018' AND'24/07/2018') AND (AE.utilizada = 1) ORDER BY AI.id, AI.numEntrada;

    Pero no me devuelve lo que yo quiero, pues en el campo observación me está mostrando datos distintos a los de la primera consulta y yo lo que quiero es mostrar el resultado de la primera consulta para cada resultado de la segunda consulta pero no lo consigo.

    Edito: También decir que he probado de cambiar el AA.id = AE.id (lo he puesto en negrita en el código anterior), por AA.id = 1715092513 y eliminando el WHERE AA.id=1715092513. Es decir, quedaría así:

    SELECT AA.observacion, AI.id, AI.numEntrada, AI.usuario, AI.hora, AI.numFactura, AI.numTicket, AI.numReserva FROM AquActivacion AA, AquInternet AI WHERE (AI.dia BETWEEN '17/07/2018' AND '24/07/2018') AND AI.utilizada= 1 UNION ALL SELECT AA.observacion, AE.id, AE.numEntrada,AE.usuario, AE.hora, AA.numFactura, AA.numTicket, AA.numReserva FROM AquActivacion AA INNER JOIN AquEntrada AE ON AA.id = 1715092513 WHERE (AE.dia BETWEEN '17/07/2018' AND'24/07/2018') AND (AE.utilizada = 1) ORDER BY AI.id, AI.numEntrada;

    Y ahí sí que me devuelve el resultado de la primera consulta para cada registro, pero... hay dos campos que me los muestra mal (concretamente AI.numTicket, AI.numReserva).

    Gracias de antemano!

    PD: Si nadie sabe cómo ayudarme, también me serviría que me dijerais una manera de unir esas dos consultas en Microsoft Office Excel 2007 (si es que existe, claro), pues lo que me interesa es hacer una consulta SQL a la base de datos y que los resultados aparezcan en Excel. Pero preferiblemente, mejor con código SQL.







    • Editado AdriánT95 miércoles, 25 de julio de 2018 8:04
    miércoles, 25 de julio de 2018 7:23

Respuestas

  • Utiliza una subconsulta de este estilo:

    Select (SELECT observacion FROM AquActivacion WHERE id=1715092513) as ComoSeLlame, restoDeCampos FROM restoDeLaSegundaConsulta

    miércoles, 25 de julio de 2018 11:28