recherche

Maison  >  Questions et réponses  >  le corps du texte

Une seule requête SQL qui utilisera un résultat SELECT dans la sous-requête suivante de la même requête

Je recherche une possibilité de (ré)utiliser les résultats d'une sélection SQL pour obtenir les valeurs de différentes sous-sélections au sein d'une même requête

Tout d'abord, je devrais obtenir $ValueToUse en sélectionnant comme ceci :

SELECT `cb_campaignid` as ValueToUse FROM `#__team_groups` WHERE `id` = '$Value'

Pour le résultat "ValueToUse", j'aimerais si possible effectuer la sélection suivante dans la même instruction de requête SQL.

SELECT coalesce (nullif (SUM(Amount), ''), '0') as general_amount, 
(SELECT SUM(c.cb_stand) FROM #__employees c, #__team_users u where c.user_id=u.user_id and u.group=(select id from #__team_groups where cb_campaignid='$ValueToUse')) as teamleden_tussenstand, 
(select title from #__customer_campaigns where id='$ValueToUse') as title, 
(select id from #__team_groups where cb_campaignid='$ValueToUse') as groupID, 
(select goal from #__customer_campaigns where id='$ValueToUse') as goal
 FROM #__customer_payments WHERE published = 1 and campaign_id = '$ValueToUse'

Quelle est la meilleure façon d’obtenir ces résultats ?

P粉195200437P粉195200437263 Il y a quelques jours404

répondre à tous(1)je répondrai

  • P粉645569197

    P粉6455691972024-04-03 17:38:56

    Que diriez-vous d'utiliser le premier résultat comme variable ?

    SELECT @ValueToUse:=
    (SELECT `cb_campaignid` as ValueToUse FROM `#__team_groups` WHERE `id` = '$Value');
    
    SELECT coalesce (nullif (SUM(Amount), ''), '0') as general_amount, 
    (SELECT SUM(c.cb_stand) FROM #__employees c, #__team_users u where c.user_id=u.user_id and u.group=(select id from #__team_groups where cb_campaignid=@ValueToUse)) as teamleden_tussenstand, 
    (select title from #__customer_campaigns where id=@ValueToUse) as title, 
    (select id from #__team_groups where cb_campaignid=@ValueToUse) as groupID, 
    (select goal from #__customer_campaigns where id=@ValueToUse) as goal
     FROM #__customer_payments WHERE published = 1 and campaign_id = @ValueToUse;

    répondre
    0
  • Annulerrépondre