peut on faire une boucle dans une requete sql ?

Eléphant du PHP | 218 Messages

26 juin 2013, 18:22

Bonjour, je souhaiterais optimiser ma requete suivante en créant une boucle directement dans ma requête si cela est possible :
$array_tracking = explode('[sep]', $revendeurs['recherche_tracking']);
$totalcommande_en_cours_sql = $bdd->query("
							SELECT id
							FROM cadeauxplaisir_commandes
							WHERE tracking_url LIKE '%" . $array_tracking[0] . "%'
							AND YEAR(date_paiement) = " . $annee_en_cours . "
							AND MONTH(date_paiement) = " . $mois_en_cours . "
							AND paiement != 0
							OR tracking_url LIKE '%" . $array_tracking[1] . "%'
							AND YEAR(date_paiement) = " . $annee_en_cours . "
							AND MONTH(date_paiement) = " . $mois_en_cours . "
							AND paiement != 0
							OR tracking_url LIKE '%" . $array_tracking[2] . "%'
							AND YEAR(date_paiement) = " . $annee_en_cours . "
							AND MONTH(date_paiement) = " . $mois_en_cours . "
							AND paiement != 0
							OR tracking_url LIKE '%" . $array_tracking[3] . "%'
							AND YEAR(date_paiement) = " . $annee_en_cours . "
							AND MONTH(date_paiement) = " . $mois_en_cours . "
							AND paiement != 0
							OR tracking_url LIKE '%" . $array_tracking[4] . "%'
							AND YEAR(date_paiement) = " . $annee_en_cours . "
							AND MONTH(date_paiement) = " . $mois_en_cours . "
							AND paiement != 0
							");
$totalcommande_en_cours_sql->setFetchMode(PDO::FETCH_ASSOC);
$totalcommande_en_cours_sql->execute();
$nb_de_commandes_en_cours = $totalcommande_en_cours_sql->rowCount();
En sachant que certain résultat de mon $array_tracking peuvent etre vide car le nombre d'entrés peut etre différent et créé donc des erreurs si celles-ci sont vides.
Merci pour votre aide.
Cadeaux personnalisés pour toute la famille :
https://cadeauxplaisir.com/

Eléphant du PHP | 229 Messages

26 juin 2013, 20:33

oui
en postgre c'est possible en tout cas

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 juin 2013, 22:51

salut,


a ta place je ferais une fonction ou une procédure stockée pour cela ;)

sinon tu boucle sur ton tableau et fait une requête par élément (requête préparée ;) ).

@+
Il en faut peu pour être heureux ......