Sortie de liste SELECT ... [Résolu]

Signaler
Messages postés
58
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
17 février 2021
-
Messages postés
58
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
17 février 2021
-
Bonjour,

Comment "sortir" une liste de phrases avec
- en début de liste les phrases "commençant" par la recherche ( LIKE 'texte%' )
- et ensuite par les phrases "contenant" la recherche ( LIKE '%texte%' ) ?

Modèle :
SELECT phrase FROM table WHERE phrase LIKE 'texte%' ... puis ... phrase LIKE '%texte%'...


pour une sortie selon texte='on a fait' :

on a fait le ménage
on a fait un BBQ
on a fait un jeu
mais qu'est ce qu'on a fait au bon dieu ?
il me demande si on a fait un dépistage
oui, on a fait un tabac !
...

Merci de l'aide




2 réponses

Messages postés
32076
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 avril 2021
345
Bonjour,

Normalement je n"interviens plus sur ce forum... mais là..


Une simple requête UNION suffit pour réaliser ce que tu demandes :
SELECT T.*
FROM (
  SELECT "1" as ordre ,Ref, Titre, InfoCommentaire FROM Films WHERE titre LIKE 'texte%'
  UNION 
  SELECT "2" as ordre , Ref, Titre, InfoCommentaire FROM Films WHERE titre LIKE '%texte%'
) T
 ORDER BY T.ordre, T.Titre

Messages postés
15812
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 avril 2021
532
Ouais Jordanne est de retour!
Messages postés
32076
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 avril 2021
345 >
Messages postés
15812
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 avril 2021

juste de passage, 1 an après mon départ d'ici :-)
mais il y a trop de questions php/sql non traitées....et je n'aurais jamais le temps de rattraper tout ce retard.
Messages postés
58
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
17 février 2021
1
Jordanne GRAND MERCI.
C'est ce que j'attendais !

J'ai juste fait une petite correction (AND titre NOT LIKE 'texte%') car sinon, les titres commençant par le texte sont doublons.

SELECT T.*
FROM (
  SELECT "1" as ordre ,Ref, Titre, InfoCommentaire FROM Films WHERE titre LIKE 'texte%'
  UNION 
  SELECT "2" as ordre , Ref, Titre, InfoCommentaire FROM Films WHERE titre LIKE '%texte%' AND titre NOT LIKE 'texte%'
) T
 ORDER BY T.ordre, T.Titre


Au plaisir de vous lire encore...
Jean-Paul
Messages postés
58
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
17 février 2021
1
Bonjour,
J'ai contourné la méthode en créant une table transit (tempTitres) dans laquelle j'insère
- les titres commençant par le texte recherché
- puis les titres contenant le texte recherché en ignorant les doublons.
Ca marche très bien, mais j'aurais souhaité une méthode directe. Peut-être n'existe-elle pas ?!

                OpenDataBase()
                sqlite_cmd.CommandText = "BEGIN TRANSACTION;"
                sqlite_cmd.CommandText &= "DELETE FROM tempTitres;"
                sqlite_cmd.CommandText &= "INSERT INTO tempTitres SELECT Ref, Titre, InfoCommentaire FROM Films WHERE titre LIKE 'texte%' ORDER BY Titre;"
                sqlite_cmd.CommandText &= "INSERT OR IGNORE INTO tempTitres SELECT Ref, Titre, InfoCommentaire FROM Films WHERE titre LIKE '%texte%' ORDER BY Titre;"
                sqlite_cmd.CommandText &= "COMMIT;"
                sqlite_cmd.ExecuteNonQuery()

                 sqlite_cmd.CommandText = "SELECT * FROM tempTitres" 
                 sqlite_cmd.ExecuteNonQuery()


Voilà, si quelqu'un a une méthode plus concise, je suis preneur.
Bonne journée.