1

i have 4 table in my database like t1,t2,t3,t4 i want count id from condition like when orderId = 1 and i don't know how i can do that . anyone can help me? its basic question but i'm new in sql query. i use this query and show four column i need just one to set my total cont to another select query.

(SELECT
(SELECT COUNT(id)
FROM c.fa
WHERE foruser = 1
) AS FA  ,
(SELECT COUNT(id)
FROM c.ia
WHERE foruser = 1
) AS IA ,
(SELECT COUNT(id)
FROM c.la
WHERE foruser = 1
) AS LA ,
(SELECT COUNT(id)
FROM c.ta
WHERE foruser = 1
) AS TA ,
(SELECT SUM(FA+IA+LA+TA)) AS TOTAL
) 
1
  • please edit your post, & show some sample table structure with data so we will try it. Commented Jun 7, 2018 at 1:56

2 Answers 2

1

I find my ANSWER :

SELECT SUM(FA+IA+LA+TA) AS TOTAL FROM (
(SELECT COUNT(id) AS FA FROM c.f WHERE foruser = 1 ) AS FAA,
(SELECT COUNT(id) AS IA FROM c.i WHERE foruser = 1) AS IAA  ,
(SELECT COUNT(id) AS LA FROM c.l WHERE foruser = 1 ) AS LAA ,
(SELECT COUNT(id) AS TA FROM c.t WHERE foruser = 1 ) AS TAA 
) 

For SomeOne like me need this.

Sign up to request clarification or add additional context in comments.

2 Comments

when you took idea from an answer please appreciate the answer with an upvote or accept the answer
i submit but no effect
0

Your query is basically correct, but to get the total you need another subquery:

SELECT x.*, (FA + IA + LA + TA) as total
FROM (SELECT (SELECT COUNT(id) FROM c.fa WHERE foruser = 1) AS FA ,
             (SELECT COUNT(id) FROM c.ia WHERE foruser = 1) AS IA,
             (SELECT COUNT(id) FROM c.la WHERE foruser = 1) AS LA,
             (SELECT COUNT(id) FROM c.ta WHERE foruser = 1) AS TA
     ) x;

The problem is that you cannot re-use a column alias in the same SELECT.

The above is only one way to write the query. Often, subqueries are put in a FROM clause, allowing:

SELECT FA.cnt, IA.cnt, LA.cnt, TA.cnt,
       (FA.cnt + IA.cnt + LA.cnt + TA.cnt) as total
FROM (SELECT COUNT(id) as cnt FROM c.fa WHERE foruser = 1) FA CROSS JOIN
     (SELECT COUNT(id) as cnt FROM c.ia WHERE foruser = 1) IA CROSS JOIN
     (SELECT COUNT(id) as cnt FROM c.la WHERE foruser = 1) LA CROSS JOIN
     (SELECT COUNT(id) as cnt FROM c.ta WHERE foruser = 1) TA;

2 Comments

thanks for answering - the query number 1 return # FA, IA, LA, TA, total '1', '11', '2', '2', '16' Not total 16 only and the query number two get syntax error : code 1054
@FarHooD . . . If you only want the total, remove the other columns from the SELECT.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.