Problemas con MYSQL ejercicio de SELECT
Publicado por jose (20 intervenciones) el 03/11/2013 11:36:23
Hola a todos,
Tengo que hacer un ejercicio que me esta dando problemas en mysql.
Teniendo tres tablas:
HOTEL (CodHot, nombre, direccion, ciudad, telefono, num_plazas, CodSuc)
ON {CodSuc} REFERENCIA SUCURSAL (CodSuc)
TURISTA (CodTur, nombre, apellidos, direecion, telefono, CodSuc)
ON {CodSuc} REFERENCIA SUCURSAL (CodSuc)
ALOJAMIENTO (CodTur, fecha_ini, CodHot, facha_salida, regimen)
ON {CodTur} REFERENCIA TURISTA (CodTur)
ON {CodHot} REFERENCIA HOTEL (CodHot)
El ejercicio dice que por cada por cada alojamiento contratado muestre los apellidos y nombres del turista en una columna seperada(ejemplo Sil Sil, Anotnio), nombre del hotel en mayusculas, fecha de inicio y el numero de dias que se ha alojado. Ordenado por nombre del hotel y despues por los apellidos.
select distinct t.CodTur, concat(t.cognoms,',',t.nom), UPPER(h.nom), a.data_ini, datediff (a.data_sortida,a.data_ini) as dies
from turista t,allotjament a,hotel h
where t.CodTur=a.CodTur
order by h.nom, t.cognoms;
Mi problema viene en que se repite muchas veces:
y continua todos los turistas aparecen como si hubiesen estado en todos los hotesles.
Cuando si voy a la tabla de alojamiento me encuntro con esto:
Esta es la tabla entera de hotel
12 rows in set (0.00 sec)
A ver si alguien me puede ayudar gracias,
Tengo que hacer un ejercicio que me esta dando problemas en mysql.
Teniendo tres tablas:
HOTEL (CodHot, nombre, direccion, ciudad, telefono, num_plazas, CodSuc)
ON {CodSuc} REFERENCIA SUCURSAL (CodSuc)
TURISTA (CodTur, nombre, apellidos, direecion, telefono, CodSuc)
ON {CodSuc} REFERENCIA SUCURSAL (CodSuc)
ALOJAMIENTO (CodTur, fecha_ini, CodHot, facha_salida, regimen)
ON {CodTur} REFERENCIA TURISTA (CodTur)
ON {CodHot} REFERENCIA HOTEL (CodHot)
El ejercicio dice que por cada por cada alojamiento contratado muestre los apellidos y nombres del turista en una columna seperada(ejemplo Sil Sil, Anotnio), nombre del hotel en mayusculas, fecha de inicio y el numero de dias que se ha alojado. Ordenado por nombre del hotel y despues por los apellidos.
select distinct t.CodTur, concat(t.cognoms,',',t.nom), UPPER(h.nom), a.data_ini, datediff (a.data_sortida,a.data_ini) as dies
from turista t,allotjament a,hotel h
where t.CodTur=a.CodTur
order by h.nom, t.cognoms;
Mi problema viene en que se repite muchas veces:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+--------+-----------------------------+--------------------+------------+------+
| CodTur | concat(t.cognoms,',',t.nom) | UPPER(h.nom) | data_ini | dies|
+--------+-----------------------------+--------------------+------------+------+
| 5 | Capdevila Sánchez,Laia | GRAN HOTEL | 2013-09-01 | 19|
| 4 | Comas Garcia,Laia | GRAN HOTEL | 2013-09-01 | 1|
| 4 | Comas Garcia,Laia | GRAN HOTEL | 2013-09-03 | 1|
| 4 | Comas Garcia,Laia | GRAN HOTEL | 2013-09-05 | 1|
| 4 | Comas Garcia,Laia | GRAN HOTEL | 2013-09-07 | 1|
| 1 | Miralles Garcia,Albert | GRAN HOTEL | 2013-09-01 | 2|
| 1 | Miralles Garcia,Albert | GRAN HOTEL | 2013-09-04 | 2|
| 1 | Miralles Garcia,Albert | GRAN HOTEL | 2013-09-07 | 3|
| 3 | Royo Royo,Josep Mª | GRAN HOTEL | 2013-09-01 | 3|
| 3 | Royo Royo,Josep Mª | GRAN HOTEL | 2013-09-06 | 4|
| 2 | Sánchez Pérez,Adrià | GRAN HOTEL | 2013-09-01 | 3|
| 2 | Sánchez Pérez,Adrià | GRAN HOTEL | 2013-09-07 | 4|
| 5 | Capdevila Sánchez,Laia | HOTEL DIAGONAL MAR | 2013-09-01 | 19|
| 4 | Comas Garcia,Laia | HOTEL DIAGONAL MAR | 2013-09-01 | 1|
| 4 | Comas Garcia,Laia | HOTEL DIAGONAL MAR | 2013-09-03 | 1
y continua todos los turistas aparecen como si hubiesen estado en todos los hotesles.
Cuando si voy a la tabla de alojamiento me encuntro con esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> select * from allotjament;
+--------+------------+--------+--------------+-------------------+
| CodTur | data_ini | CodHot | data_sortida | regim |
+--------+------------+--------+--------------+-------------------+
| 1 | 2013-09-01 | 100 | 2013-09-03 | mitja pensió |
| 1 | 2013-09-04 | 103 | 2013-09-06 | mitja pensió |
| 1 | 2013-09-07 | 105 | 2013-09-10 | pensió complerta |
| 2 | 2013-09-01 | 100 | 2013-09-04 | mitja pensió |
| 2 | 2013-09-07 | 103 | 2013-09-11 | mitja pensió |
| 3 | 2013-09-01 | 100 | 2013-09-04 | mitja pensió |
| 3 | 2013-09-06 | 103 | 2013-09-10 | mitja pensió |
| 4 | 2013-09-01 | 100 | 2013-09-02 | pensió complerta |
| 4 | 2013-09-03 | 103 | 2013-09-04 | pensió complerta |
| 4 | 2013-09-05 | 105 | 2013-09-06 | pensió complerta |
| 4 | 2013-09-07 | 101 | 2013-09-08 | pensió complerta |
| 5 | 2013-09-01 | 100 | 2013-09-20 | pensió complerta |
+--------+------------+--------+--------------+-------------------+
Esta es la tabla entera de hotel
12 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
+--------+--------------------+---------------+---------------+-----------+------------+--------+
| CodHot | nom | adreca | ciutat | telefon | num_places | CodSuc |
+--------+--------------------+---------------+---------------+-----------+------------+--------+
| 100 | Hotel Gran via | Gran Via | Barcelona | 931234567 | 120 | 100 |
| 101 | Hotel Diagonal Mar | Diagonal | Barcelona | 932345678 | 100 | 100 |
| 102 | Gran Hotel | C/ Mondragón | Barcelona | 933456789 | 90 | 100 |
| 103 | Gran Hotel | C/ Llull | Girona | 934567890 | 60 | 101 |
| 104 | Hoteles Hilken | C/ Llacuna | Girona | 935678901 | 30 | 101 |
| 105 | Gran Hotel | C/ Bonavista | Castelldefels | 936789012 | 120 | 101 |
+--------+--------------------+---------------+---------------+-----------+------------+--------+
A ver si alguien me puede ayudar gracias,
Valora esta pregunta


0