Sortie de liste SELECT ...

Résolu
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
- 2 mai 2020 à 09:52
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
- 4 mai 2020 à 15:21
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




A voir également:

2 réponses

jordane45
Messages postés
35489
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mai 2022
356
4 mai 2020 à 10:46
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

1
Whismeril
Messages postés
17339
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
24 mai 2022
596
4 mai 2020 à 11:15
Ouais Jordanne est de retour!
0
jordane45
Messages postés
35489
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 mai 2022
356 > Whismeril
Messages postés
17339
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
24 mai 2022

4 mai 2020 à 14:03
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.
0
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
1
4 mai 2020 à 15:21
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
0
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
1
4 mai 2020 à 10:30
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.
0