Eruano's Blog

Simple y con foco… como debe ser!

SQL Server – Consutar registros de tabla A con referencias(hijos) en tabla B

with 2 comments

Teniendo una relacion de uno a muchos en SQL Server necesite consultar los registros de la tabla A de los cuales su ID fuera Llave Foranea de otro u otros registros en la tabla B.
Ejemplo, teniendo:

TABLA PADRES

Padre_Id Nombre
1 Pedro
2 Maria
3 Jose
TABLA HIJOS

Padre_ID Hijo_Id Nombre Hijo
1 1 Ana
1 2 Sofia
3 3 Andres

Si se necesita obtener el listado de padres con hijos:
SELECT Padres.Padre_Id, Padres.Nombre FROM Padres
LEFT JOIN Hijos ON Padres.Padre_ID = Hijos.Padre_ID
GROUP BY Padres.Padre_Id,Padres.Nombre
HAVING COUNT(Hijos.Hijo_ID) > 0

Si se necesita obtener el listado de padres sin hijos:
SELECT Padres.Padre_Id, Padres.Nombre FROM Padres
LEFT JOIN Hijos ON Padres.Padre_ID = Hijos.Padre_ID
GROUP BY Padres.Padre_Id,Padres.Nombre
HAVING COUNT(Hijos.Hijo_ID) = 0

Saludos

Written by eruano

22 febrero 2011 a 8:46 am

2 comentarios

Subscribe to comments with RSS.

  1. Un query menos costoso para el motor para el primer caso sería este:

    select distinct p.* from padres p inner join hijos h on p.padre_id= h.padre_id

    Geekzero

    14 marzo 2011 at 5:46 pm


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: