Seleccion registros con coincidencias
Publicado por Facundo (3 intervenciones) el 22/12/2018 18:35:05
Hola a Todos y todas,
Estoy encallado con un proyecto personal para hacer un peque buscador de buses, he intentado el diseño en SQL de la consulta específica pero no hace exactamente lo que quiero, os explico mi intención
Tengo esta tabla entrada a Acces
Id P1 P2 P3 P4 P5 P6 P7 P8 P9 P10
3 PUYO SANTA CLARA AROSEMENA TOLA TENA ARCHIDONA LORETO EL COCA
4 PUYO BAÑOS DE AGUA SANTA PELILEO AMBATO LATACUNGA QUITO SUR
5 PUYO BAÑOS DE AGUA SANTA RIOBAMBA
6 PUYO MACAS
7 PUYO MACAS GUALAQUIZA
9 PUYO SANTA CLARA AROSEMENA TOLA TENA ARCHIDONA LORETO EL COCA LA JOYA DE LOS SACHAS NUEVA LOJA
10 PUYO BAÑOS DE AGUA SANTA PELILEO AMBATO LATACUNGA QUITO SUR
16 PUYO TAISHA
19 PUYO BAÑOS DE AGUA SANTA PELILEO AMBATO
21 TENA ARCHIDONA LORETO EL COCA
22 EL COCA LA JOYA DE LOS SACHAS NUEVA LOJA
23 AMBATO PELILEO BAÑOS DE AGUA SANTA PUYO SANTA CLARA AROSEMENA TOLA TENA ARCHIDONA LORETO EL COCA
24 EL COCA LORETO ARCHIDONA TENA AROSEMENA TOLA SANTA CLARA PUYO
Querría hacer una selección que me seleccionase todos los registros de esta tabla que cumplen tener los nombres de dos paradas en cualquier posición de sus columnas y siempre en el orden que se requiera. Es decir, si yo entro primero “Tena” y luego “Loreto”, la selección me toma los registros 3, 9, 21, pero no toma el 24, ya que el 24 tiene primero “Loreto” y segundo “Tena”, no cumple el orden en el que se entró la consulta
Hice una consulta el SQL pero debe tener algún error, ya que filtra bien pero en ocasiones además de los resultados buenos da otros añadidos. Hice la Consulta en SQL directamente en el Acces, que por cierto no soy informático y es mi primera vez con SQL, así que seguro es el código más ineficiente de la historia (jaja) Lo pego aquí.
Os agradecería un mundo si me pudieseis ayudar.
Un saludo,
------------------------------------------------------------------------------------------------------------------------------------------------------
Consulta “salida / destino”
--Por teclado se entran primero la ubicación de salida [Entra el lugar de salida]) y luego el destino [Entra destino]
SELECT Rutas.Salida, Rutas.[Hora Salida], Compañias.[Nombre compañia], [Paradas de rutas].P1, [Paradas de rutas].P2, [Paradas de rutas].P3, [Paradas de rutas].P4, [Paradas de rutas].P5, [Paradas de rutas].P6, [Paradas de rutas].P7, [Paradas de rutas].P8, [Paradas de rutas].P9, [Paradas de rutas].P10, Rutas.[Destino Final]
FROM ([Paradas de rutas] INNER JOIN Rutas ON [Paradas de rutas].[Id Rutas] = Rutas.[ID Paradas]) INNER JOIN (Compañias INNER JOIN [Compañias para rutas] ON Compañias.[Nombre compañia] = [Compañias para rutas].Compañias) ON Rutas.[ID Ruta] = [Compañias para rutas].[Id Rutas]
WHERE ((([Paradas de rutas].P1)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P2)=[Entra destino])) OR ((([Paradas de rutas].P3)=[Entra destino])) OR ((([Paradas de rutas].P4)=[Entra destino])) OR ((([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P2)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P3)=[Entra destino])) OR ((([Paradas de rutas].P4)=[Entra destino])) OR ((([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P3)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P4)=[Entra destino])) OR ((([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P4)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P5)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P6)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P7)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P8)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P9)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P10)=[Entra destino]));
Estoy encallado con un proyecto personal para hacer un peque buscador de buses, he intentado el diseño en SQL de la consulta específica pero no hace exactamente lo que quiero, os explico mi intención
Tengo esta tabla entrada a Acces
Id P1 P2 P3 P4 P5 P6 P7 P8 P9 P10
3 PUYO SANTA CLARA AROSEMENA TOLA TENA ARCHIDONA LORETO EL COCA
4 PUYO BAÑOS DE AGUA SANTA PELILEO AMBATO LATACUNGA QUITO SUR
5 PUYO BAÑOS DE AGUA SANTA RIOBAMBA
6 PUYO MACAS
7 PUYO MACAS GUALAQUIZA
9 PUYO SANTA CLARA AROSEMENA TOLA TENA ARCHIDONA LORETO EL COCA LA JOYA DE LOS SACHAS NUEVA LOJA
10 PUYO BAÑOS DE AGUA SANTA PELILEO AMBATO LATACUNGA QUITO SUR
16 PUYO TAISHA
19 PUYO BAÑOS DE AGUA SANTA PELILEO AMBATO
21 TENA ARCHIDONA LORETO EL COCA
22 EL COCA LA JOYA DE LOS SACHAS NUEVA LOJA
23 AMBATO PELILEO BAÑOS DE AGUA SANTA PUYO SANTA CLARA AROSEMENA TOLA TENA ARCHIDONA LORETO EL COCA
24 EL COCA LORETO ARCHIDONA TENA AROSEMENA TOLA SANTA CLARA PUYO
Querría hacer una selección que me seleccionase todos los registros de esta tabla que cumplen tener los nombres de dos paradas en cualquier posición de sus columnas y siempre en el orden que se requiera. Es decir, si yo entro primero “Tena” y luego “Loreto”, la selección me toma los registros 3, 9, 21, pero no toma el 24, ya que el 24 tiene primero “Loreto” y segundo “Tena”, no cumple el orden en el que se entró la consulta
Hice una consulta el SQL pero debe tener algún error, ya que filtra bien pero en ocasiones además de los resultados buenos da otros añadidos. Hice la Consulta en SQL directamente en el Acces, que por cierto no soy informático y es mi primera vez con SQL, así que seguro es el código más ineficiente de la historia (jaja) Lo pego aquí.
Os agradecería un mundo si me pudieseis ayudar.
Un saludo,
------------------------------------------------------------------------------------------------------------------------------------------------------
Consulta “salida / destino”
--Por teclado se entran primero la ubicación de salida [Entra el lugar de salida]) y luego el destino [Entra destino]
SELECT Rutas.Salida, Rutas.[Hora Salida], Compañias.[Nombre compañia], [Paradas de rutas].P1, [Paradas de rutas].P2, [Paradas de rutas].P3, [Paradas de rutas].P4, [Paradas de rutas].P5, [Paradas de rutas].P6, [Paradas de rutas].P7, [Paradas de rutas].P8, [Paradas de rutas].P9, [Paradas de rutas].P10, Rutas.[Destino Final]
FROM ([Paradas de rutas] INNER JOIN Rutas ON [Paradas de rutas].[Id Rutas] = Rutas.[ID Paradas]) INNER JOIN (Compañias INNER JOIN [Compañias para rutas] ON Compañias.[Nombre compañia] = [Compañias para rutas].Compañias) ON Rutas.[ID Ruta] = [Compañias para rutas].[Id Rutas]
WHERE ((([Paradas de rutas].P1)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P2)=[Entra destino])) OR ((([Paradas de rutas].P3)=[Entra destino])) OR ((([Paradas de rutas].P4)=[Entra destino])) OR ((([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P2)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P3)=[Entra destino])) OR ((([Paradas de rutas].P4)=[Entra destino])) OR ((([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P3)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P4)=[Entra destino])) OR ((([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P4)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P5)=[Entra destino])) OR ((([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P5)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P6)=[Entra destino])) OR ((([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P6)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P7)=[Entra destino])) OR ((([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P7)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P8)=[Entra destino])) OR ((([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P8)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P9)=[Entra destino])) OR ((([Paradas de rutas].P10)=[Entra destino]))
OR ((([Paradas de rutas].P9)=[Entra el lugar de salida]) AND
(([Paradas de rutas].P10)=[Entra destino]));
Valora esta pregunta
0