jueves, septiembre 28, 2023

Outer Join / Inner Join, consultas a tablas con valores null

Cuando hacemos una consulta a varias tablas y una de estas tiene valores null, necesitamos que nos retorne datos de todas formas, ya que si alguna de las tablas retorna un null podría ser que no nos muestre los datos.

SQL Server MERGE MERGE in SQL Server for Insert, Delete and Update with two tables - Practical example using MERGE to synchronize two tables, Insert, Update and Delete in a single…

En sql ya sea MSSQL o ORACLE tenemos la opción para que nos retorne los datos que nosotros deseamos.

Ejemplo:

T_Usuarios
————————–
Codigo Nombre CodPais
————————–
usr100 Carlo CRI
usr200 Marco CRI
usr300 Maria USA
 

T_Paises
————————–
CodPais Pais
————————–
CRI Costa Rica
USA Estados Unidos
CAN Canada
Mex Mexico

Ahora si queremos hacer una consulta para ver los usuarios por país, tendríamos un problema en el caso de Mexico y Canada, ya que como no tienen usuarios no nos retornaria datos. Por eso es que debemos indicarle a SQL que sin importar eso nos retorne un null o el valor que seamos.

Opción 1, la que no nos retorna todos los paises

Select count(U.Codigo) Cantidad, P.Pais
From T_Usuarios U,
T_Paises P
Where U.CodPais = P.CodPais
Group by P.Pais
 

Resultado
———————-
Cantidad Pais
———————-
2 CRI
1 USA

Opción 2 MSSQL, que retorne todos los paises aunque no tenga usuarios

Select count(U.Codigo), P.Pais
From T_Usuarios U,
T_Paises P
Where U.CodPais =* P.CodPais
Group by P.Pais

Opcion 2 ORACLE, que retorne todos los paises aunque no tenga usuarios

Select count(U.Codigo) Cantidad, P.Pais
From T_Usuarios U,
T_Paises P
Where U.CodPais(+) = P.CodPais
Group by P.Pais

Resultado

————————
Cantidad Pais
————————
2 CRI
1 USA
0 CAN
0 MEX

Como vemos retornó los valores aunque no existan, en este caso.
Y se puede aplicar para cualquier tipo de consulta.

Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub

Redes Sociales

2,736FansMe gusta
326SeguidoresSeguir

Popular esta semana

SQL Server

Cómo saber la fecha que se modificó un procedimiento almacenado

Poder saber cuales objetos o procedimientos almacenados se modificaron recientemente es muy útil principalmente en bases de datos donde varios desarroladores tienen acceso
SQL Server MERGE

MERGE en SQL Server para Insert, Delete y Update con dos tablas

Ejemplo práctico usando MERGE para sincronizar dos tablas, Insert, Update y Delete en un solo query. Válido para SQL SERVER 2008 o superior.
SQL Server

Format en SQL Server (Transact-SQL)

La función Format aplica desde SQL Server 2012 en adelante. Devuelve un valor con el formato previamente indicado. Se puede utilizar para definir el formato de una fecha y hora o para retornar un numero como varchar en un formato específico.

Últimos artículos

SQL Server MERGE

MERGE in SQL Server for Insert, Delete and Update with two tables

Practical example using MERGE to synchronize two tables, Insert, Update and Delete in a single query. Valid for SQL SERVER 2008 or...

Como crear una API REST con ASP.NET Core 6.0

Crear una API REST con C# en ASP.NET es un proceso sencillo y rápido que permite exponer un conjunto de recursos a...
Machine Learning & Python

Introducción a Machine Learning en Python

Machine Learning es una rama de la inteligencia artificial que se enfoca en el desarrollo de sistemas que pueden aprender de...
SQL Server MERGE

MERGE en SQL Server, como utilizarlo de forma sencilla

El comando MERGE en SQL Server se utiliza para combinar datos de varias tablas en una sola tabla. Es útil para actualizar...