Consulta SQL para encontrar el autobús que viaja a través de una ruta.
Teniendo una tabla llamada “route” que contiene el “bus_id”, el nombre de la parada y la posición (que es la secuencia de las paradas).
Los autobuses viajan en una dirección según la posición.
Tabla: route
| bus_id | stop_name | position |
|--------|-----------|----------|
| 1 | Stop_1 | 1 |
| 1 | Stop_2 | 2 |
| 1 | Stop_3 | 3 |
| 1 | Stop_4 | 4 |
| 1 | Stop_5 | 5 |
| 1 | Stop_6 | 6 |
| 1 | Stop_7 | 7 |
| 2 | Ramdom_1 | 1 |
| 2 | Ramdom_2 | 2 |
| 2 | Stop_3 | 3 |
| 2 | Stop_4 | 4 |
| 2 | Stop_5 | 5 |
| 2 | Stop_6 | 6 |
| 2 | Ramdom_3 | 7 |
Ahora necesitamos encontrar el “bus_id” que va desde la parada 3 hasta la parada 6, es decir, “bus_id” = 1 y 2.
Ejemplos:
1. Desde “stop_1” hasta “stop_6” = 1
2. Desde “stop_6” hasta “Ramdom_3” = 2
3. Desde “stop_6” hasta “stop_1” = no se encontró ningún autobús
Necesitamos una consulta MYSQL para encontrar los datos anteriores.
La base de datos utilizada: Versión del servidor 10.4.21-MariaDB (XAMPP)
davy.ai
Para encontrar el
bus_id
que viaja desdestop_3
hastastop_6
, podemos usar la siguiente consulta de MYSQL:Esta consulta utiliza una auto-join en la tabla
route
para unir dos filas del mismobus_id
. La consulta filtra las filas donde la parada de inicio esStop_3
y la parada de destino esStop_6
. La condicióna.position < b.position
asegura que el autobús viaje destop_3
astop_6
en la secuencia correcta.La salida de la consulta anterior será:
Si queremos encontrar el autobús que viaja desde
stop_6
hastaRamdom_3
, podemos modificar la consulta anterior a:La salida de la consulta anterior será:
Y, si queremos encontrar el autobús que viaja desde
stop_6
hastastop_1
, podemos modificar la consulta a:La salida de la consulta anterior quedará vacía, ya que no hay ningún autobús que viaje desde
stop_6
hastastop_1
.