1.-Exacto, como bien te dije en DML(querys) no ocupas las FK, las FK son solo para la parte de DDL
2.-Aqui pongo los padres pero se puede generar lo que necesitas, pero en el ejemplo que manejo nada mas estan los padres(general) no se cuales son pareja y cuales solteros correcto? asi que digamos que agregamos una columna id pareja(solo para ejemplo) y podemos obtener esto:
Código SQL:
Ver originalCREATE TABLE #padres
(
id INT IDENTITY(1,1),
nombre VARCHAR(30),
id_pareja INT
)
CREATE TABLE #hijos
(
id INT IDENTITY(1,1),
nombre VARCHAR(30)
)
CREATE TABLE #relacion
(
id_padre INT,
id_hijo INT
)
INSERT INTO #padres VALUES ('Pepe',1)
INSERT INTO #padres VALUES ('Sofia',1)
INSERT INTO #padres VALUES ('Manolo',2)
INSERT INTO #padres VALUES ('Maria',2)
INSERT INTO #hijos VALUES ('Josito')
INSERT INTO #hijos VALUES ('Anita')
INSERT INTO #hijos VALUES ('Vicentito')
INSERT INTO #relacion VALUES (1,1)
INSERT INTO #relacion VALUES (1,2)
INSERT INTO #relacion VALUES (4,1)
INSERT INTO #relacion VALUES (2,2)
INSERT INTO #relacion VALUES (2,3)
INSERT INTO #relacion VALUES (3,3)
SELECT
DISTINCT t1.id_pareja,t3.nombre
FROM #padres AS t1
LEFT JOIN #relacion AS t2 ON (t2.id_padre=t1.id)
LEFT JOIN #hijos AS t3 ON (t2.id_hijo=t3.id)
WHERE t1.id IS NOT NULL
Y la traduccion de tu batch:
Código BASH:
Ver originalfor %f in hijos do SELECT hijos.nombre AS s1 WHERE s1 <> %f
seria:
Como comentario, no puedes aplicar la misma logica de programacion en una base de datos, esta cambia...ojo con eso.....