MySQL expression régulière

Résolu
boulika Messages postés 58 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 30 octobre 2009 - 17 oct. 2007 à 15:39
boulika Messages postés 58 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 30 octobre 2009 - 24 oct. 2007 à 11:54
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

boulika Messages postés 58 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 30 octobre 2009
24 oct. 2007 à 11:54
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
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 oct. 2007 à 21:41
salut

je trouve ta requete assez propre en fait... un like etant plus rapide qu'une regexp...
0
boulika Messages postés 58 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 30 octobre 2009
24 oct. 2007 à 09:28
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
0
boulika Messages postés 58 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 30 octobre 2009
24 oct. 2007 à 09:35

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
0
Rejoignez-nous