2012-10-15 4 views
1

La requête suivante est celle que j'utilisais précédemment ... mais je veux combiner ces deux requêtes afin d'améliorer la performanceComment récupérer deux valeurs de colonnes différentes à partir de deux tables différentes dans une table de valeurs dépend de l'autre valeur de la table

select a, b, c 
    from table1 
where d LIKE 'xxx' 
    and f like 'yyyy' 
order by b desc; 

J'exécute les valeurs de requête et de lecture ci-dessus.

Pour chaque valeur de b à partir de la requête ci-dessus, exécutez à nouveau la requête ci-dessous dans une boucle.

select count(*) 
    from table2 where b=? AND js_email_id IN 
(
    select js_email_id 
    from js_initialsignup 
    where UCase(jsaccountstatus) LIKE UCase('live') 
    AND UCase(js_status) LIKEUCase('accepted') 
) 

Comment puis-je combiner les requêtes et obtenir le nombre et les valeurs à la fois?

Répondre

0
select a,b,c, 
     (select count(*) 
from table2 where b=a.b AND js_email_id IN 
(
    select js_email_id 
    from js_initialsignup 
    where UCase(jsaccountstatus) LIKE UCase('live') 
    AND UCase(js_status) LIKEUCase('accepted') 
)) as cnt 

from table1 a 
+0

Cette requête a fonctionné pour moi .... MERCI – mvinay

+0

si son utile, vous pouvez accepter la réponse – AnandPhadke

+0

est-il possible d'obtenir ROW_NUMBERS() ci-dessus de la requête dans MySQL – mvinay

0

Essayez ceci:

SELECT t1.a, t1.b, t1.c, COUNT(t2.*) 
FROM table1 t1 
INNER JOIN table2 t2 ON t1.b = t2.b 
INNER JOIN js_initialsignup j ON t2.js_email_id = j.js_email_id 
WHERE t1.d LIKE 'xxx' 
    AND t1.f like 'yyyy' 
    AND UCase(j.jsaccountstatus) LIKE UCase('live') 
    AND UCase(j.js_status) LIKE UCase('accepted'))" 
GROUP BY t1.a, t1.b, t1.c 
ORDER BY by t1.b DESC; 
Questions connexes