none
Ordenar el resultado de una consulta SQL por coincidencia... RRS feed

  • Pregunta

  • Estimados,

    Necesito de sus conocimientos por un momento.

    Estoy desarrollando una consulta que busca una palabra o frase dentro de unas tablas en SQL.

    La consulta funciona perfecto, me entrega todos los valores que requiero al consultar, aqui esta la consulta:

    SELECT proce.[Process Name], conte.[Large Title], rela.[ID Process], rela.[ID Father], rela.[ID Content]

    FROM Content conte

    INNER JOIN Process proce ON proce.[ID Process] = conte.[ID Process]

    INNER JOIN Relationships rela ON conte.ID = rela.[ID Content]

    WHERE (conte.[Large Title] LIKE '%pack ahorro%') OR (conte.[Large Content] LIKE '%pack ahorro%')

    AND (proce.Tipo = '1') AND (rela.[ID Father] <> rela.[ID Content])

    En el caso del ejemplo estoy buscando la palabra PACK AHORRO, ahora... lo que necesito es que al listar los resultados me muestre primero todas las coincidencias que comiencen con la palabra buscada, en este caso PACK AHORRO...

    He intentado con ORDER BY pero solo me los ordena de forma ASC o DESC.

    Alguna idea o sugerencia???

    Saludos cordiales,
    Gabriel

    jueves, 8 de mayo de 2014 15:50

Respuestas

Todas las respuestas

  • He logrado algo al separar las consultas y utilizando alias...

    Acá el código:

    SELECT proce.[Process Name], conte.[Large Title], rela.[ID Process], rela.[ID Father], rela.[ID Content], 1 AS ORDEN

    FROM Content conte

    INNER JOIN Process proce ON proce.[ID Process] = conte.[ID Process]

    INNER JOIN Relationships rela ON conte.ID = rela.[ID Content]

    WHERE proce.[Process Name] = 'pack ahorro'

    AND (proce.Tipo = '1') AND (rela.[ID Father] <> rela.[ID Content])

    UNION

    SELECT proce.[Process Name], conte.[Large Title], rela.[ID Process], rela.[ID Father], rela.[ID Content], 2  AS ORDEN

    FROM Content conte

    INNER JOIN Process proce ON proce.[ID Process] = conte.[ID Process]

    INNER JOIN Relationships rela ON conte.ID = rela.[ID Content]

    WHERE (conte.[Large Title] LIKE '%pack ahorro%') OR (conte.[Large Content] LIKE '%pack ahorro%')

    AND (proce.Tipo = '1') AND (rela.[ID Father] <> rela.[ID Content])

     

    ORDER BY ORDEN, proce.[Process Name],rela.[ID Process], rela.[ID Father], rela.[ID Content]

    El problema es que me presenta 65 duplicados... :/

    Saludos,
    Gabriel

    jueves, 8 de mayo de 2014 16:31
  • Hola.

    En este enlace tienes un ejemplo de como hacer exactamente lo que quieres.

    Espero te sirva de ayuda.

    jueves, 8 de mayo de 2014 19:39