MySQL expression régulière

[Résolu]
Signaler
Messages postés
58
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
30 octobre 2009
-
Messages postés
58
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
30 octobre 2009
-
Bonjour à tous,

Voici mon petit probleme. J'ai une requete mysql comme celle-ci :
SELECT * FROM ".PREFIX."rubrique  id_rubrique LIKE '%".$_GET['id_rubrique'].",%' OR id_rubrique LIKE '".$_GET['id_rubrique'].",%' OR id_rubrique LIKE '%,".$_GET['id_rubrique']."' OR id_rubrique LIKE '%".$_GET['id_rubrique']."'";

Elle est beaucoup trop lourde et non optimisé.

Les enregistrements de ma table sont comme tels :
Er1 -> 1,12,169,85,16
Er3 -> 12,128,69
Er4 -> 9,168,10,1,11
Er5 -> 9,3,198,36

... Table assez conséquente

Je recherche comme faire ma requete pour récupérer que les enregistrements qui contiennent 1 et uniquement 1 par exemple et non165,10,11 ...

Le seule moyen que j'ai trouvé c'est avec ma condition du haut comment donc faire pour que cela soit plus propre ? ( PS: je suis nul en MySQL)

Si quelqu'un pouvait m'aider ca serait super sympa.

Merci beaucoup d'avance à tout le monde

Boulika webdesign

4 réponses

Messages postés
58
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
30 octobre 2009

Trouvé = SELECT * FROM boutique_produit WHERE (id_rubrique LIKE '%165,%' OR
id_rubrique LIKE '165,%' OR id_rubrique LIKE '%,165' OR id_rubrique
LIKE '%165' )AND activation = 1 AND date_publication <=
current_date() AND date_expiration >= current_date()ORDER by
ordre_affichage ASC LIMIT 0,9
  Juste a regrouper ma requete

entre de ( )

Boulika webdesign
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
salut

je trouve ta requete assez propre en fait... un like etant plus rapide qu'une regexp...
Messages postés
58
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
30 octobre 2009

Merci ;)

Par conytre j'ai un souci avec le OR enfin les OR . Je le sélectionne dans la base les enregistrements qui sont != de 0 mais avec le OR il va me les afficher quand meme.

SELECT * FROM boutique_produit WHERE activation > 0 AND
date_publication <= current_date() AND date_expiration >=
current_date() OR id_rubrique LIKE '%165,%' OR id_rubrique LIKE '165,%'
OR id_rubrique LIKE '%,165' OR id_rubrique LIKE '%165'ORDER by
ordre_affichage ASC LIMIT 0,9

Pourtant en retirant la requete avec les OR tout marche a merveuille: activation, current_date, ... que faire ?

Boulika webdesign
Messages postés
58
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
30 octobre 2009


SELECT * FROM boutique_produit WHERE id_rubrique LIKE '%165,%' OR id_rubrique LIKE '165,%' OR id_rubrique LIKE '%,165' OR id_rubrique LIKE '%165' AND activation = 1 AND date_publication = current_date()ORDER by ordre_affichage ASC LIMIT 0,9id_produitid_rubriqueid_categorieid_optionid_typeproduit_virtuelactivationlang_disporef_interne_boutiquedisponibilite_generalepresent_accueilnewssession_closeparam_languenom_produitref_automatiquetva_aplliqueeprix_htprix_ttcarrondir_prixdate_insertion_produitperiode_affichagedate_publicationdate_expirationaffichage_prixaffichage_imageaffichage_page_breakaffichage_image_principale_produitaffichage_dispoaffichage_stockaffichage_bttnaffichage_descriptifaffichage_ongletaffichage_miniatureurl_imagetemplatetype_descriptiftxt_courttxt_longdes_titredes_prendredes_descriptifdes_ordrelaisser_moduleonglet_listeaffiche_bttn_commandestock_produittype_promotionstatistique_produitid_type_livraisonaffichage_amisaffichage_nom_produitaffichage_reserver_enmagaffichage_description_longueaffichage_livraisonsouskeywordscount_achattype_produit_fianetordre_affichage80165,17300001  2000 Nomprod_104.93550 00000-00-005000-00-0011010111000 0&lt;br&gt;&lt;br&gt;    11 1029130211111 00082173,165,100001  2000 Rose Fleur raquette pour 5 drag&eacute;esprod_301.091.300 00000-00-005000-00-0011010111000 0Id&eacute;ale pour pr&eacute;senter vos drag&eacut...Hauteur 19 cm.&lt;br&gt;Existe en trois couleurs...    11 102598211111Les bougis, bougis verte, bougios maraige00285165,1,16200000  1000 Dr&agrave;g&eacute;prod_40418.48500.500 00000-00-005000-00-0011010111000 0qdsdqsdqsdqdqsdqsd    11 103134111111 003Boulika webdesign