none
Unión de 3 tablas RRS feed

  • Pregunta

  • Buen día comunidad


    Quisiera saber como puedo resolver este problema. Tengo 3 tablas:


    Clientes

    id
    nombre


    Apuntados01

    idcliente


    Apuntados02
    idcliente


    Los idcliente son FK de id Clientes, lo que necesito es mostrar en una tabla vista el nombre y el id del cliente, sin que se repitan los ids, ya que en las tablas Apuntados pueden existir coincidencias de ids.


    Intenté con esto

    SELECT        APuntados01.idcliente
    FROM            Apuntados01
    UNION
    SELECT        Apuntados02.idcliente
    FROM            Apuntados02

    Me muestra los ids sin repetir pero no el nombre.

    ¿Cómo puedo lograr lo que busco?, ¿Que muestre el nombre y los ids de las tablas apuntados sin que se repitan?

    De antemano muchísimas gracias.


    • Editado Renato Soza domingo, 19 de enero de 2014 4:39 Olvido
    domingo, 19 de enero de 2014 4:37

Respuestas

  • Me da error, dice que es inválida la columna 'id' la columna 'id' existe en la tabla Clientes.

    SELECT        C.id, C.nombre
    FROM            dbo.Clientes AS C
    INNER JOIN
    (SELECT        dbo.Apuntados01.idcliente
    FROM            dbo.Apuntados01
    UNION
    SELECT        dbo.Apuntados02.idcliente
    FROM            dbo.Apuntados02)
    AS A ON C.id = A.id

    Error Execution Error

    Executed  SQL statement SELECT C.id, C.nombre FROM dbo.Clientes AS C INNER JOIN (SELECT idcliente FROM dbo.Apuntados01 UNION SELECT idcliente FROM dbo.Apuntados02) AS A ON C.id = A.id.

    Error Source: .Net SqlClient Data Provider

    Error Message: Invalid column name 'id'

    Parece que es la sintáxis.

    Gracias por ayudar y por tu tiempo!!!

    • Marcado como respuesta Renato Soza lunes, 20 de enero de 2014 1:03
    • Editado Renato Soza lunes, 20 de enero de 2014 1:04
    lunes, 20 de enero de 2014 1:00

Todas las respuestas

  • Hola.

    Sólo te falta cruzar con la tabla de clientes para obtener los nombres:

    Select C.idcliente, C.Nombre,
    from Clientes C inner join (
    
    SELECT        APuntados01.idcliente
    FROM            Apuntados01
    UNION
    SELECT        Apuntados02.idcliente
    FROM            Apuntados02
    
    ) A on C.idcliente = A.idcliente


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    domingo, 19 de enero de 2014 7:13
    Moderador
  • Alberto buen día, gracias por responder.

    Al ejecutar el comando en SQL 2012 me aparece el siguiente error

    Missing or incomplete SELECT clause.
    Unable to parse query text.

    Error Message: Incorrect syntax near the keyword 'FROM'. Incorrect syntax near 'A'

    domingo, 19 de enero de 2014 17:56
  • Hola.

    Me dejé una coma de más en la sentencia que puse. Prueba así:

    Select C.idcliente, C.Nombre
    from 
      Clientes C inner join
      (
       SELECT APuntados01.idcliente FROM Apuntados01
       UNION
       SELECT Apuntados02.idcliente FROM Apuntados02
      ) A on C.idcliente = A.idcliente


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    domingo, 19 de enero de 2014 20:26
    Moderador
  • Me da error, dice que es inválida la columna 'id' la columna 'id' existe en la tabla Clientes.

    SELECT        C.id, C.nombre
    FROM            dbo.Clientes AS C
    INNER JOIN
    (SELECT        dbo.Apuntados01.idcliente
    FROM            dbo.Apuntados01
    UNION
    SELECT        dbo.Apuntados02.idcliente
    FROM            dbo.Apuntados02)
    AS A ON C.id = A.id

    Error Execution Error

    Executed  SQL statement SELECT C.id, C.nombre FROM dbo.Clientes AS C INNER JOIN (SELECT idcliente FROM dbo.Apuntados01 UNION SELECT idcliente FROM dbo.Apuntados02) AS A ON C.id = A.id.

    Error Source: .Net SqlClient Data Provider

    Error Message: Invalid column name 'id'

    Parece que es la sintáxis.

    Gracias por ayudar y por tu tiempo!!!

    • Marcado como respuesta Renato Soza lunes, 20 de enero de 2014 1:03
    • Editado Renato Soza lunes, 20 de enero de 2014 1:04
    lunes, 20 de enero de 2014 1:00
  • Era la última línea, me funcionó

     C.id = A.idcliente

    Había que cambiarla por esto.

    GRACIAS ALBERTO!!!!

    lunes, 20 de enero de 2014 1:02