Utiliser une requete dans une autre
Résolu/Fermé
Mika
-
1 avril 2010 à 11:17
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 - 1 avril 2010 à 11:39
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 - 1 avril 2010 à 11:39
A voir également:
- Utiliser une requete dans une autre
- Comment utiliser chromecast - Guide
- Utiliser une tablette comme ecran - Guide
- Comment utiliser wetransfer gratuit ? - Guide
- Utiliser iphone comme webcam - Guide
- Comment utiliser google drive - Guide
8 réponses
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
1 avril 2010 à 11:19
1 avril 2010 à 11:19
bonjour!
c'est uniquement du code SQL ou autour il y a un autre langage de programmation?
c'est uniquement du code SQL ou autour il y a un autre langage de programmation?
Je code en sql et en PHP.
merci de ta réponse
merci de ta réponse
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
1 avril 2010 à 11:24
1 avril 2010 à 11:24
oui donc une petite boucle for...
après regarde la rapidité de tes requetes voir si c'est une bonne solution tant au niveau efficacité qu'au niveau rapidité!
si ça marche, pense à mettre ce post en "résolu!"
après regarde la rapidité de tes requetes voir si c'est une bonne solution tant au niveau efficacité qu'au niveau rapidité!
si ça marche, pense à mettre ce post en "résolu!"
$categories = 'select c.categories_id as categories from ' . TABLE_CATEGORIES . ' c where c.parent_id = 183 ';
$categories_array = tep_db_query($categories);
while( $categories = tep_db_fetch_array($categories_array))
{
$query1 = 'select o.orders_id from ' . TABLE_ORDERS . ' o ';
$query1 .= ', ' . TABLE_ORDERS_PRODUCTS . ' op '; $query1 .= ', ' . TABLE_PRODUCTS . ' p ';
$query1 .= ', ' . TABLE_PRODUCTS_TO_CATEGORIES . ' pc ';
$query1 .= 'where pc.categories_id in ' . $categories['categories'] . ' ';
}
Comme ça, j'ai déja essayé mais cela me renvoie Query est vide!!
$categories_array = tep_db_query($categories);
while( $categories = tep_db_fetch_array($categories_array))
{
$query1 = 'select o.orders_id from ' . TABLE_ORDERS . ' o ';
$query1 .= ', ' . TABLE_ORDERS_PRODUCTS . ' op '; $query1 .= ', ' . TABLE_PRODUCTS . ' p ';
$query1 .= ', ' . TABLE_PRODUCTS_TO_CATEGORIES . ' pc ';
$query1 .= 'where pc.categories_id in ' . $categories['categories'] . ' ';
}
Comme ça, j'ai déja essayé mais cela me renvoie Query est vide!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
Modifié par blackdam le 1/04/2010 à 11:31
Modifié par blackdam le 1/04/2010 à 11:31
si je comprend bien et que ton $categories_array est un tableau...
Pour les trucs en gras et soulignés jsui pas sur de la synthaxe... jsui plus orienté java mais c'est pour te guider dans le raisonnement...
en gros, tu boucles pour chaque variable qu'il y a dans ton tableau!
Plus t'avance moins vite, moins t'avance plus vite
$categories_array = tep_db_query($categories); for( $i = 0, i < "taille de $categorie_array", i++) { $query1 = 'select o.orders_id from ' . TABLE_ORDERS . ' o '; $query1 .= ', ' . TABLE_ORDERS_PRODUCTS . ' op '; $query1 .= ', ' . TABLE_PRODUCTS . ' p '; $query1 .= ', ' . TABLE_PRODUCTS_TO_CATEGORIES . ' pc '; $query1 .= 'where pc.categories_id = ' . $categories_array[i] . ' '; }
Pour les trucs en gras et soulignés jsui pas sur de la synthaxe... jsui plus orienté java mais c'est pour te guider dans le raisonnement...
en gros, tu boucles pour chaque variable qu'il y a dans ton tableau!
Plus t'avance moins vite, moins t'avance plus vite
Le soucis, c'est que ma requête va s'exécuter plusieurs fois...
il faudrait que je puisse récupérer les valeurs renvoyées dans la première requête et les comparer avec un IN.
Cela donnerai
where .... IN (500,600,700,800...)
il faudrait que je puisse récupérer les valeurs renvoyées dans la première requête et les comparer avec un IN.
Cela donnerai
where .... IN (500,600,700,800...)
blackdam
Messages postés
327
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
13 février 2015
35
1 avril 2010 à 11:39
1 avril 2010 à 11:39
Je sais que ta requete va s'executer plusieurs fois...
n'étant pas un as en SQL au niveau optimisation, je ne sais pas quel choix est le mieux!
mais bon, ta 1ere requete met un temps fou à s'executer... si tu as 50 nombres dans ton IN, il va comparer sa valeur à 50 nombres... ou alors executer 50 petites requetes...
au choix!
n'étant pas un as en SQL au niveau optimisation, je ne sais pas quel choix est le mieux!
mais bon, ta 1ere requete met un temps fou à s'executer... si tu as 50 nombres dans ton IN, il va comparer sa valeur à 50 nombres... ou alors executer 50 petites requetes...
au choix!
Modifié par blackdam le 1/04/2010 à 11:21