Récupération résultat requête dans seconde requête
Shelhyan
-
Manueel01 -
Manueel01 -
Bonjour,
Je dois récupérer un Id via une requête SQL et ensuite faire une requête Update avec les lignes concernant ce même Id.
Ma requête d'Update est la suivante :
$update = "UPDATE vtiger_potentialscf
SET vtiger_potentialscf.cf_1096 = (SELECT SUM(total) FROM vtiger_quotes WHERE potentialid = potentialid AND quotestage != 'Corrigé')
WHERE potentialid = potentialid";
$adb->pquery($update);
Ici, potentialid est l'Id que je souhaite récupérer, car en l'état, il n'arrive pas à le récupérer.
Je souhaite le récupérer via :
$potentialId = "SELECT potentialid FROM vtiger_quotes WHERE quoteid = quoteid";
Comment faire et dans quel ordre ?
Merci beaucoup,
Je dois récupérer un Id via une requête SQL et ensuite faire une requête Update avec les lignes concernant ce même Id.
Ma requête d'Update est la suivante :
$update = "UPDATE vtiger_potentialscf
SET vtiger_potentialscf.cf_1096 = (SELECT SUM(total) FROM vtiger_quotes WHERE potentialid = potentialid AND quotestage != 'Corrigé')
WHERE potentialid = potentialid";
$adb->pquery($update);
Ici, potentialid est l'Id que je souhaite récupérer, car en l'état, il n'arrive pas à le récupérer.
Je souhaite le récupérer via :
$potentialId = "SELECT potentialid FROM vtiger_quotes WHERE quoteid = quoteid";
Comment faire et dans quel ordre ?
Merci beaucoup,
Configuration: Windows / Chrome 88.0.4324.190
A voir également:
- Récupération résultat requête dans seconde requête
- Récupération de déchets - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Lexer resultat - Télécharger - Sport
- 1 milliard en seconde - Accueil - Technologies
- Toutes les formules de maths seconde pdf - Télécharger - Études & Formations
6 réponses
Bonjour,
. as tu testé tes requêtes DIRECTEMENT dans ta bdd pour voir si elles fonctionnent avant d'essayer de les mettre dans ton code php ? ... car c'est la première chose à faire.
Et puis
... ici .. le second "quoteid" .. ça ne serait pas plutôt une variable ou une valeur qui devrait s'y trouver ?
car sinon.. ta requête ne veut rien dire ...
Et quit à faire deux requêtes ( pour trouver l'id ...) autant récupérer le Somme en même temps non ?
Bref :
Il faut que tu nous précises le langage utilisé
La structure de tes tables
Les éventuelles valeurs des variables que tu utilises
Si c'est bien sqlserver que tu utilises ( ou mysql ? )
Avec quoi as tu fais la connexion à ta bdd ... je ne connais pas pquery ....
. as tu testé tes requêtes DIRECTEMENT dans ta bdd pour voir si elles fonctionnent avant d'essayer de les mettre dans ton code php ? ... car c'est la première chose à faire.
Et puis
WHERE quoteid = quoteid
... ici .. le second "quoteid" .. ça ne serait pas plutôt une variable ou une valeur qui devrait s'y trouver ?
car sinon.. ta requête ne veut rien dire ...
Et quit à faire deux requêtes ( pour trouver l'id ...) autant récupérer le Somme en même temps non ?
Bref :
Il faut que tu nous précises le langage utilisé
La structure de tes tables
Les éventuelles valeurs des variables que tu utilises
Si c'est bien sqlserver que tu utilises ( ou mysql ? )
Avec quoi as tu fais la connexion à ta bdd ... je ne connais pas pquery ....
Bonjour,
Merci de ta réponse.
Alors le langage c'est PHP, et j'utilise mysql.
J'ai fais la connexion à la BDD par PDO.
J'ai testé ma requête dans la BDD en mettant en dur l'id de l'affaire que je souhaite utiliser, et ma requête fonctionne.
Enfin decompte, je travaille dans la table des affaires, et je souhaite récupérer l'id d'un devis relié à une affaire. Et c'est là que ça bloque. J'ai du mal a expliquer désolé, je pateauge bien comme il faut..
Ma requête
$update = "UPDATE vtiger_potentialscf
SET vtiger_potentialscf.cf_1096 = (SELECT SUM(total) FROM vtiger_quotes WHERE potentialid = potentialid AND quotestage != 'Corrigé')
WHERE potentialid = potentialid";
Met à jour TOUTES les affaires avec la somme de TOUT les devis de l'entreprise, autant dire, une boulette ^^
Je veux qu'elle mette à jour l'affaire concernée avec la somme des devis qui lui sont reliés..
Merci de ta réponse.
Alors le langage c'est PHP, et j'utilise mysql.
J'ai fais la connexion à la BDD par PDO.
J'ai testé ma requête dans la BDD en mettant en dur l'id de l'affaire que je souhaite utiliser, et ma requête fonctionne.
Enfin decompte, je travaille dans la table des affaires, et je souhaite récupérer l'id d'un devis relié à une affaire. Et c'est là que ça bloque. J'ai du mal a expliquer désolé, je pateauge bien comme il faut..
Ma requête
$update = "UPDATE vtiger_potentialscf
SET vtiger_potentialscf.cf_1096 = (SELECT SUM(total) FROM vtiger_quotes WHERE potentialid = potentialid AND quotestage != 'Corrigé')
WHERE potentialid = potentialid";
Met à jour TOUTES les affaires avec la somme de TOUT les devis de l'entreprise, autant dire, une boulette ^^
Je veux qu'elle mette à jour l'affaire concernée avec la somme des devis qui lui sont reliés..
Voici mon code. C'est une custom function au sein du CRM Vtiger.
<?php
function updateQuotesAmount()
{
//BDD CONNEXION
try
{
if ($bdd = new PDO('mysql:host=localhost;dbname=****;charset=utf8', '****', '*******'))
{
echo "Connection to ***** successfull \n";
}
else
{
echo "Connection to ****** failed\n";
}
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
//UPDATE QUOTES AMOUNTS POTENTIAL
global $adb;
/*$potentialId = "SELECT potentialid FROM vtiger_quotes WHERE quoteid = quoteid";
$result = mysql_query($potentialId);*/
$update = "UPDATE vtiger_potentialscf SET vtiger_potentialscf.cf_1096 = (SELECT SUM(total) FROM vtiger_quotes WHERE vtiger_quotes.potentialid = vtiger_potential.potentialid AND quotestage != 'Corrigé') WHERE vtiger_quotes.potentialid = vtiger_potential.potentialid";
$adb->pquery($update);
}
updateQuotesAmount();
//CONNEXION CLOSE
$bdd->null;
?>
J'avoue que je n'ai pas vraiment idée de ce que je fais là. J'ai repris la custom que quelqu'un a fait et l'ai modifier pour mon utilisation, mais du coup c'est dans tout les cas nul..
Je vais essayer de reprendre ça du début et voir quelle manière propre utuliser. peux tu me dire si je peux récupérer le résultat d'une requête SQL dans une variable afin de réutiliser cette variable dans une autre requête ? Où il faut passer par une seule et même requête, et dans ce cas là, comment faire un update avec un select imbriqué pour la récupération d'un élément d'une autre table que celle où le update fera l'action ?
Je vais essayer de reprendre ça du début et voir quelle manière propre utuliser. peux tu me dire si je peux récupérer le résultat d'une requête SQL dans une variable afin de réutiliser cette variable dans une autre requête ? Où il faut passer par une seule et même requête, et dans ce cas là, comment faire un update avec un select imbriqué pour la récupération d'un élément d'une autre table que celle où le update fera l'action ?
DOnc
Dans le code que tu nous montres ...
La connexion PDO .. non utilisée par la suite .. donc .. inutile
L'instruction mysql_query .. ce n'est pas du PDO ... donc à virer
Par contre, ce CRM semble mettre à disposition la variable $adb
Il serait bien de savoir ce que fait la méthode pquery
Savoir ce qu'elle attend comme paramètre(s)
Savoir ce qu'elle retourne comme résultat ...
Sans ça... impossible d'avancer.
Je reviens ensuite sur tes requêtes ... dans ton where .. tu ne lui passe AUCUNE variable .... ou alors.. tu as oublié le signe $ devant quoteid
... et puis.. elle vient d'où cette variable ? Ce n'est pas un paramètre de la fonction.... donc elle se trouve où lorsque tu appelles cette fonction ??
Dans le code que tu nous montres ...
La connexion PDO .. non utilisée par la suite .. donc .. inutile
L'instruction mysql_query .. ce n'est pas du PDO ... donc à virer
Par contre, ce CRM semble mettre à disposition la variable $adb
Il serait bien de savoir ce que fait la méthode pquery
$adb->pquery()
Savoir ce qu'elle attend comme paramètre(s)
Savoir ce qu'elle retourne comme résultat ...
Sans ça... impossible d'avancer.
Je reviens ensuite sur tes requêtes ... dans ton where .. tu ne lui passe AUCUNE variable .... ou alors.. tu as oublié le signe $ devant quoteid
... et puis.. elle vient d'où cette variable ? Ce n'est pas un paramètre de la fonction.... donc elle se trouve où lorsque tu appelles cette fonction ??
Alors, j'ai modifié ma requête, et voilà où j'en suis. La MAJ du montant des devis dans les Affaires, avec la somme des devis reliés à cette affaire, se fait corectement. Le soucis maintenant, c'est qu'elle se fait dans toutes les affaires en même temps, au lieu de se faire uniquement dans l'affaire reliée au devis qui est éditer.
Donc voilà ma requête :
Comment récupérer l'id du devis et celui de l'affaire relié au devis ? Et comment l'utiliser dans ma requête ?
Donc voilà ma requête :
//UPDATE SALESORDER AMOUNTS POTENTIAL function updateSalesOrderAmount() { //BDD CONNEXION try { if ($bdd = new PDO('mysql:host=localhost;dbname=******;charset=utf8', '****', '*******')) { echo "Successfull"; } else { echo "Failed"; } } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } //SQL REQUEST $quoteStage = "Corrigé"; $updateQ = $bdd->prepare("UPDATE vtiger_potentialscf INNER JOIN vtiger_quotes SET vtiger_potentialscf.cf_1096 = (SELECT SUM(total) FROM vtiger_quotes WHERE vtiger_quotes.potentialid = vtiger_potentialscf.potentialid AND quotestage != :quoteStage) WHERE vtiger_potentialscf.potentialid = vtiger_quotes.potentialid"); $updateQ->execute(array('quoteStage' => $quoteStage)); }
EDIT : Correction des balises de code ( ajout du LANGAGE pour avoir la coloration syntaxique et la numération des lignes de code )
Je souhaite récupérer l'id du devis qui est édité au lancement de la requête, pour que celle ci se fasse uniquement dans l'affaire reliée, et non toutes les affaires de l'entreprise. Les montants sont toutefois bons dans toutes les affaires.Comment récupérer l'id du devis et celui de l'affaire relié au devis ? Et comment l'utiliser dans ma requête ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question