# SELECT
```SQL
SELECT
s.nombres AS nombre_socio,
s.apellidos AS apellido_socio,
i.nombre AS nombre_instalacion,
r.fecha_reserva,
r.hora_inicio,
r.hora_fin,
e.nombre AS estado_reserva
```
# FROM
```SQL
/*
Ejemplo de uso FROM
*/
FROM reserva AS r
```
# JOIN
```SQL
/*
Ejemplo de uso JOIN
*/
JOIN socio AS s ON r.idSocio = s.idSocio
JOIN instalacion AS i ON r.idInstalacion = i.idInstalacion
```
# WHERE
```SQL
/*
Ejemplo de uso Where
*/
WHERE r.fecha_reserva >= '2025-09-30'
```
# GROUP
```SQL
/*
Ejemplo de uso Group
*/
GROUP BY s.idSocio, s.nombres, s.apellidos
```
# HAVING
```SQL
/*
Ejemplo de uso Having
*/
HAVING COUNT(f.idFamiliar) > 5
```
# ORDER
```SQL
/*
Ejemplo de uso ORDER
*/
ORDER BY r.fecha_reserva ASC, s.nombres ASC;
```
# ALIAS (AS)
## 🧭 Uso de _alias_
> Un **alias** es un nombre corto o alternativo** para una tabla o una columna.**
## 🔸 Alias de tabla
Se definen después del nombre de la tabla:
`FROM socio AS s JOIN reserva AS r ON r.idSocio = s.idSocio`
Ahora puedes referirte a las columnas como `s.nombres`, `r.fecha_reserva`, etc.
**Ventajas:**
- Evita ambigüedades si varias tablas tienen columnas con el mismo nombre (`id`, `nombre`, etc.).
- Hace el código más corto y legible.
- Permite escribir condiciones complejas de forma clara.
👉 En MySQL, el `AS` es opcional:
`FROM socio s JOIN reserva r ON r.idSocio = s.idSocio`
es equivalente.
## 🔸 Alias de columna
Sirven para **renombrar una columna en el resultado** (para presentación o claridad).
`SELECT s.nombres AS nombre_socio, s.apellidos AS apellido_socio, COUNT(f.idFamiliar) AS total_familiares`
**Ventajas:**
- Mejora la legibilidad del resultado.
- Útil cuando se usan funciones (`COUNT`, `SUM`) o nombres de columna largos.
**Nota:** Los alias de columna **solo existen en el resultado final**, no dentro del `WHERE` o `GROUP BY`.
# EjemploConsulta
```SQL
/*
Ejemplo de Consulta completa Marce
*/
SELECT
s.nombres AS nombre_socio,
s.apellidos AS apellido_socio,
i.nombre AS nombre_instalacion,
r.fecha_reserva,
r.hora_inicio,
r.hora_fin,
e.nombre AS estado_reserva
FROM reserva AS r
JOIN socio AS s ON r.idSocio = s.idSocio
JOIN instalacion AS i ON r.idInstalacion = i.idInstalacion
JOIN estadoreserva AS e ON r.idEstadoReserva = e.idEstadoReserva
WHERE r.fecha_reserva >= '2025-09-30'
ORDER BY r.fecha_reserva, r.hora_inicio, i.nombre, s.nombres;
```