jpmaton
Messages postés64Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention12 février 2023
-
2 mai 2020 à 09:52
jpmaton
Messages postés64Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention12 février 2023
-
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:
Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par exists.
jordane45
Messages postés37718Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention22 septembre 2023342 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
Whismeril
Messages postés18605Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention23 septembre 2023628 4 mai 2020 à 11:15
Ouais Jordanne est de retour!
jordane45
Messages postés37718Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention22 septembre 2023342
>
Whismeril
Messages postés18605Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention23 septembre 2023 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.
jpmaton
Messages postés64Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention12 février 20233 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
jpmaton
Messages postés64Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention12 février 20233 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.
4 mai 2020 à 11:15
4 mai 2020 à 14:03
mais il y a trop de questions php/sql non traitées....et je n'aurais jamais le temps de rattraper tout ce retard.
4 mai 2020 à 15:21
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.
Au plaisir de vous lire encore...
Jean-Paul