Sql quand tu nous tient

Bonjour à tous, mon nouveau petit soucis et que je désire effectué un select dans une basse de donnée mais je veut que ma réponse se place dans un ordre précis
exemple : si je tape" bar" je veut les nom qui posséde "bar "uniquement , puis les nom qui commence par "bar" puis les nom qui finissent par "bar" et enfin les noms qui posséde bar au milieu sans reprendre evidament les nom déjà trouver

voilà un grand merci à tous ceus qui voudrons bien m'aider

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Je ferais quelque chose dans ce genre :

    SELECT ordre, colonne
      FROM (
            SELECT 10 as "Ordre", colonne
              FROM ma_table
             WHERE colonne = 'bar'
             UNION
            SELECT 20 as "Ordre", colonne
              FROM ma_table
             WHERE colonne like 'bar%'
             UNION
            SELECT 30 as "Ordre", colonne
              FROM ma_table
             WHERE colonne like '%bar'
             UNION
            SELECT 40 as "Ordre", colonne
              FROM ma_table
             WHERE colonne like '%bar%'
           )
     ORDER BY ordre
    


    (requête non testée, désolé)

    -- 
    Tittom (ça c'est de la signature)
    1. ok j'ai tester sa marche avec une petite modif ci -joint

      SELECT *
      FROM (
      SELECT distinct 10 lig, design
      FROM d_article
      WHERE design = 'BAR'
      UNION
      SELECT distinct 20 lig, design
      FROM d_article
      WHERE design like 'BAR%' and design <> 'BAR'
      UNION
      SELECT distinct 30 lig, design
      FROM d_article
      WHERE design like '%BAR%' and design not like 'BAR%' and design <> 'BAR'
      )
      order by lig,design

      merci pour ton aide