Si por ese lado me quedo trankilo ya que en "teoria" MySQL se bancaria tantas consultas: las paso el codigo conpleto para que tengan una idea:
/* ------------- Crea Tabla Abuela -------------*/
CREATE TEMPORARY TABLE Tmp_Abuela (
ID_Hembra INT,
ID_Padre INT,
ID_Madre INT
);
INSERT INTO Tmp_Abuela SELECT ID_Hembra, ID_Padre, ID_Madre
FROM R_Hembras WHERE ID_Up = [#UP];
/*select * from Tmp_Abuela;
/* ------------- Crea Tabla Abuelo -------------*/
CREATE TEMPORARY TABLE Tmp_Abuelo (
ID_Macho INT,
ID_Padre INT,
ID_Madre INT
);
INSERT INTO Tmp_Abuelo SELECT ID_Macho, ID_Padre, ID_Madre
FROM R_Machos
WHERE ID_Up = [#UP];
/*select * from Tmp_Abuelo;
/* ------------- Crea Tabla Madres -------------*/
CREATE TEMPORARY TABLE Tmp_Madres (
ID_Hembra INT,
ID_Padre INT,
ID_Madre INT,
ID_AbuelaP INT,
ID_AbueloP INT,
ID_AbuelaM INT,
ID_AbueloM INT
);
INSERT INTO Tmp_Madres
SELECT R_Hembras.ID_Hembra, R_Hembras.ID_Padre, R_Hembras.ID_Madre,
Tmp_Abuelo.ID_Madre, Tmp_Abuelo.ID_Padre,
Tmp_Abuela.ID_Madre, Tmp_Abuela.ID_Padre
FROM R_Hembras, Tmp_Abuela, Tmp_Abuelo
WHERE ID_Up = [#UP] AND
(R_Hembras.ID_Madre = Tmp_Abuela.ID_Hembra) AND
(R_Hembras.ID_Padre = Tmp_Abuelo.ID_Macho);
/*select * from Tmp_Madres;
/* ------------- Crea Tabla Padres -------------*/
CREATE TEMPORARY TABLE Tmp_Padres (
ID_Macho INT,
ID_Padre INT,
ID_Madre INT,
ID_AbuelaP INT,
ID_AbueloP INT,
ID_AbuelaM INT,
ID_AbueloM INT
);
INSERT INTO Tmp_Padres
SELECT R_Machos.ID_Macho, R_Machos.ID_Padre, R_Machos.ID_Madre,
Tmp_Abuelo.ID_Madre, Tmp_Abuelo.ID_Padre,
Tmp_Abuela.ID_Madre, Tmp_Abuela.ID_Padre
FROM R_Machos, Tmp_Abuela, Tmp_Abuelo
WHERE ID_Up = [#UP] AND
(R_Machos.ID_Madre = Tmp_Abuela.ID_Hembra) AND
(R_Machos.ID_Padre = Tmp_Abuelo.ID_Macho);
/*select * from Tmp_Padres ;
/* ------------- Crea Tabla Hijas -------------*/
CREATE TEMPORARY TABLE Tmp_Hijas (
ID_Hembra INT,
ID_Padre INT,
ID_AbuP INT,
ID_AbuM INT,
ID_BisP1 INT,
ID_BisM1 INT,
ID_BisP2 INT,
ID_BisM2 INT
);
INSERT INTO Tmp_Hijas
SELECT
R_Hembras.ID_Hembra,
R_Hembras.ID_Padre,
Tmp_Padres.ID_Padre AS ID_AbuP,
Tmp_Madres.ID_Padre AS ID_AbuM,
Tmp_Padres.ID_AbueloP AS ID_BisP1,
Tmp_Padres.ID_AbueloM AS ID_BisM1,
Tmp_Madres.ID_AbueloM AS ID_BisP2,
Tmp_Madres.ID_AbueloM AS ID_BisM2
FROM R_Hembras, Tmp_Padres, Tmp_Madres
WHERE ID_Up = [#UP] AND
(R_Hembras.ID_Madre = Tmp_Madres.ID_Hembra) AND
(R_Hembras.ID_Padre = Tmp_Padres.ID_Macho);
/*select * from Tmp_Hijas;
/* ------------- Crea Tabla Arbol -------------*/
CREATE TEMPORARY TABLE Tmp_Arbol (
ID_Hembra INT,
ID_Padre INT,
ID_AbuP INT,
ID_AbuM INT,
ID_BisP1 INT,
ID_BisM1 INT,
ID_BisP2 INT,
ID_BisM2 INT
);
/* ------------- Inserto Tabla Hijas en Arbol -------------*/
INSERT INTO Tmp_Arbol
SELECT
Tmp_Hijas.ID_Hembra,
Tmp_Hijas.ID_Padre,
Tmp_Hijas.ID_AbuP AS ID_AbuP,
Tmp_Hijas.ID_AbuM AS ID_AbuM,
Tmp_Hijas.ID_BisP1 AS ID_BisP1,
Tmp_Hijas.ID_BisM1 AS ID_BisM1,
Tmp_Hijas.ID_BisP2 AS ID_BisP2,
Tmp_Hijas.ID_BisM2 AS ID_BisM2
FROM Tmp_Hijas;
/* ------------- Inserto Tabla Madres en Arbol -------------*/
INSERT INTO Tmp_Arbol
SELECT
Tmp_Madres.ID_Hembra,
Tmp_Madres.ID_Padre,
0,0,0,0,0,0
FROM Tmp_Madres
WHERE Tmp_Madres.ID_AbuelaP = 0;
/* ------------- Inserto Tabla Abuelas en Arbol -------------*/
INSERT INTO Tmp_Arbol
SELECT
Tmp_Abuela.ID_Hembra,
0,0,0,0,0,0,0
FROM Tmp_Abuela
WHERE Tmp_Abuela.ID_Padre = 0;
/* ------------------------ Consulta -----------------------*/
select * from Tmp_Arbol ORDER by ID_Hembra;
/* ----------------- Desbloquea las tablas -----------------*/
UNLOCK TABLES;
/* --------------- Borrado tablas Temporarias --------------*/
DROP TABLE Tmp_Abuela;
DROP TABLE Tmp_Abuelo;
DROP TABLE Tmp_Madres;
DROP TABLE Tmp_Padres;
DROP TABLE Tmp_Hijas;
DROP TABLE Tmp_Arbol; |