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
28977
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
330
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
14880
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
4 juin 2020
413
Ouais Jordanne est de retour!
Messages postés
28977
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 juin 2020
330 >
Messages postés
14880
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
4 juin 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.