unir tipos tablas subconsultas inner ejemplos consultas concatenar sql join left-join inner-join

tipos - union en sql



SQL-combinación interna de 2 tablas pero devuelve todo si 1 tabla está vacía (3)

Tengo 2 tablas que dicen A y B, y quiero unirme a ellas.

La Tabla A siempre tendrá registros en ella.

Cuando la tabla B tiene filas, quiero que la consulta gire todas las filas en las que coinciden la tabla A y la tabla B. (es decir, se comportan como unión interna)

Sin embargo, si la tabla B está vacía, me gustaría devolver todo de la tabla A.

¿Es esto posible hacer en 1 consulta?

Gracias.


Me encontré con la misma pregunta y, como nunca fue respondida, publico una solución dada a este problema en otro lugar en caso de que ayude a alguien en el futuro. Ver la fuente .

select * from TableA as a left join TableB as b on b.A_Id = a.A_Id where b.A_Id is not null or not exists (select top 1 A_Id from TableB)


Prueba esto

SELECT t1.* FROM table1 AS t1 INNER JOIN table2 AS t2 ON t1.something = t2.someotherthing UNION SELECT * FROM table1 WHERE something = somethingelse;


Sí, para obtener resultados como este, use LEFT JOIN .

Básicamente, lo que INNER JOIN hace es solo devuelve una fila donde tiene al menos una coincidencia en la otra tabla. El LEFT JOIN , por otro lado, devuelve todos los registros en la tabla lateral izquierda si no coinciden en la otra tabla.

Para obtener más información sobre las uniones, visite el siguiente enlace: