Transformer plusieurs requetes en 1 seule

Résolu
cs_lord1366 Messages postés 20 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 27 novembre 2009 - 3 nov. 2009 à 13:26
cs_lord1366 Messages postés 20 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 27 novembre 2009 - 4 nov. 2009 à 08:25
Bonjour,

Je suis sur le point de finir un programme de gestion de campagne SMS, j'en suis à la partie des stats et je me pose la question suivante, j'aimerai récupérer un prévisionnel sur les besoins en SMS. Pour celà je fais 3 requêtes :

Au jour J
Dans 1 mois
Dans 3 mois

Ne serait-il pas possible de faire un seul select me retournant via des alias SMSJ, SMS1, SMS3 merci pour votre aide.

$DateEnvoi = $_SESSION[SESSION_NAME]['annee'].'-'.$_SESSION[SESSION_NAME]['mois'].'-'.date("j");

$Req "SELECT count(NLCC.id_client) FROM campagnes NNC , liste_clients_campagne NLCC WHERE NNC.id_entreprise ".$_SESSION[SESSION_NAME]['id_entreprise']." AND NNC.status IN (1) AND NNC.id_campagne = NLCC.id_campagne AND NNC.date_envoi <= '".$DateEnvoi."%' ";

$Result = $co_req->ExecRequest($Req);

$NbSMSActuel = $co_req->ResultReq($Result,"fetch_array");

$SMSActuel = ($NbSMS - $NbSMSActuel[0]);

//SMS mois + 1

$DateEnvoi1Mois = date("Y-m-d", mktime(0, 0, 0, date("m")+1, date("d"), date("Y")));

$Req "SELECT count(NLCC.id_client) FROM campagnes NNC , liste_clients_campagne NLCC WHERE NNC.id_entreprise ".$_SESSION[SESSION_NAME]['id_entreprise']." AND NNC.status IN (1,2) AND NNC.id_campagne = NLCC.id_campagne AND NNC.date_envoi > '".$DateEnvoi."%' AND NNC.date_envoi <= '".$DateEnvoi1Mois."%' ";

$Result = $co_req->ExecRequest($Req);

$NbSMS1Mois = $co_req->ResultReq($Result,"fetch_array");

if($NbSMS1Mois[0]>0)
$SMS1Mois = ($NbSMS - ($NbSMS1Mois[0] + $NbSMSActuel[0]));
else
$SMS1Mois = $SMSActuel;

//SMS mois + 3

$DateEnvoi3Mois = date("Y-m-d", mktime(0, 0, 0, date("m")+3, date("d"), date("Y")));

$Req "SELECT count(NLCC.id_client) FROM campagnes NNC , nliste_clients_campagne NLCC WHERE NNC.id_entreprise ".$_SESSION[SESSION_NAME]['id_entreprise']." AND NNC.status IN (1,2) AND NNC.id_campagne = NLCC.id_campagne AND NNC.date_envoi > '".$DateEnvoi1Mois."' AND NNC.date_envoi <= '".$DateEnvoi3Mois."%' ";

$Result = $co_req->ExecRequest($Req);

4 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
3 nov. 2009 à 19:33
Excuse moi, j'avais mal compris ta question. Dans ce cas tu peux utiliser UNION afin de faire tes trois requêtes en une seule et obtenir les 3 résultats.
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
3 nov. 2009 à 13:37
Salut,

Il te suffit d'utiliser OR et de bien mettre les parenthèses là où il faut.
0
cs_lord1366 Messages postés 20 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 27 novembre 2009 1
3 nov. 2009 à 15:24
Un OR va me faire un cumul, ou alors je n'ai pas bien compris ce que tu me dis ça je sais faire c'est plutot une requete imbriqué mais pas avec un cumul.

Merci en tout cas.
0
cs_lord1366 Messages postés 20 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 27 novembre 2009 1
4 nov. 2009 à 08:25
Excellent, merci
0
Rejoignez-nous