Duda sobre consultas
Publicado por Benjamin (1 intervención) el 28/04/2020 18:52:11
Buenas a todos,
estoy intentando hacer una consulta en la que aparezcan un grupo de personas con sus nombres,el de sus padres y el telefono de cada uno, seria así:
tabla1_nombre | tabla1_apellido1 | tabla1_apellido2 | tabla2_padre | tabla2_madre
Antonio-------------Ramirez----------------Froilan--------------Rodrigo---------Amparo
En vez de eso me sale en dos filas,como es normal, o si consigo hacerlo como quiero solo salen uno o dos resultados y no todos los miembros del grupo.
Les dejo el codigo:
Esta son las consultas que hago, la primera sale todo el grupo pero el nombre de los padres se repite y la segunda sale bien pero sin el resto del grupo:
Seguro que es algo que no termino de ver o estoy equivocado en algo. Gracias de antemano
estoy intentando hacer una consulta en la que aparezcan un grupo de personas con sus nombres,el de sus padres y el telefono de cada uno, seria así:
tabla1_nombre | tabla1_apellido1 | tabla1_apellido2 | tabla2_padre | tabla2_madre
Antonio-------------Ramirez----------------Froilan--------------Rodrigo---------Amparo
En vez de eso me sale en dos filas,como es normal, o si consigo hacerlo como quiero solo salen uno o dos resultados y no todos los miembros del grupo.
Les dejo el codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
CREATE TABLE adultos (
adu_dni CHAR(9)NOT NULL,
adu_nombre VARCHAR(50) NOT NULL,
adu_apellido1 VARCHAR(25) NOT NULL,
adu_apellido2 VARCHAR(25),
adu_tel1 CHAR(9) DEFAULT NULL,
adu_tel2 CHAR(9) DEFAULT NULL,
PRIMARY KEY (adu_dni)
)ENGINE=INNODB;
CREATE TABLE grupo (
gru_cod INT(2)NOT NULL,
PRIMARY KEY (gru_cod)
)ENGINE=INNODB;
CREATE TABLE cateq (
cat_id INT(9)NOT NULL AUTO_INCREMENT,
cat_dni CHAR(9)NOT NULL,
cat_nombre VARCHAR(50) NOT NULL,
cat_apellido1 VARCHAR(25) NOT NULL,
cat_apellido2 VARCHAR(25) NOT NULL,
cat_grupo INT(2) NOT NULL,
PRIMARY KEY (cat_id),
FOREIGN KEY (cat_grupo) REFERENCES grupo(gru_cod) ON DELETE SET NULL ON UPDATE CASCADE
)ENGINE=INNODB;
CREATE TABLE padres (
pad_id INT(9)NOT NULL AUTO_INCREMENT,
pad_adulto CHAR(9)NOT NULL,
pad_cateq INT(9)NOT NULL,
PRIMARY KEY (pad_id),
FOREIGN KEY (pad_adulto) REFERENCES adultos(adu_dni),
FOREIGN KEY (pad_cateq) REFERENCES cateq(cat_id)
)ENGINE=INNODB;
Esta son las consultas que hago, la primera sale todo el grupo pero el nombre de los padres se repite y la segunda sale bien pero sin el resto del grupo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT cat_nombre AS nombre, cat_apellido1 AS primer_apellido, cat_apellido2 AS segundo_apellido, adultos.adu_nombre AS adulto, a1.adu_nombre, adultos.adu_tel1 as telefono,cat_grupo as codigo
FROM cateq
JOIN grupo ON cateq.cat_grupo = grupo.gru_cod
LEFT JOIN padres ON cateq.cat_id = padres.pad_cateq
LEFT JOIN adultos ON adultos.adu_dni = padres.pad_adulto
LEFT JOIN adultos as a1 ON a1.adu_dni = padres.pad_adulto
LEFT JOIN servicio ON cateq.cat_servicio = servicio.ser_id
where cat_grupo=1;
SELECT distinct cat_nombre AS nombre, cat_apellido1 AS primer_apellido, cat_apellido2 AS segundo_apellido, cateq.cat_grupo, a1.adu_nombre, a1.adu_tel1, a2.adu_nombre, a2.adu_tel1
FROM cateq,adultos as a1, adultos as a2,padres,grupo
WHERE cat_id=pad_cateq AND a1.adu_dni=pad_adulto AND cat_grupo=gru_cod AND a2.adu_nombre =ANY (
select a2.adu_nombre
from adultos as a2,padres
where a2.adu_dni=pad_adulto )
group by cat_nombre
HAVING COUNT(cat_nombre)>=1;
Seguro que es algo que no termino de ver o estoy equivocado en algo. Gracias de antemano
Valora esta pregunta


0