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

Signaler
Messages postés
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
-
Messages postés
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
-
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
29567
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2020
337
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
14757
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2020
433
Ouais Jordanne est de retour!
Messages postés
29567
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2020
337 >
Messages postés
14757
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2020

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
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
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
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
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.