मेरे पास 2 टेबल हैं, users
और games
। उपयोगकर्ता के पास कई गेम हो सकते हैं। मुझे उन सभी users
की आवश्यकता है जिनके पास games
हैं, साथ ही उनकी games_hosted
गिनती (games
जिसमें finished
से true
तक का कॉलम है।
पी.एस. मुझे व्यवस्थापक तालिका में लोड करने के लिए सभी डेटा चाहिए। चूंकि बहुत सारे खेल हैं। मैंने डेटा को पेजेट करने और सीमित करने का निर्णय लिया। लेकिन निम्नलिखित क्वेरी को सीमित करने में भी वही समय लग रहा है। मैं इसे बेहतर तरीके से कैसे पूछ सकता हूं?
select
distinct "uid",
"username",
(
select
count(id)
from
games
where
state = 'finished'
and user_uid = users.uid
) as games_hosted
from
"users"
inner join "games" on "games"."user_uid" = "users"."uid"
where
"games"."state" in ('published', 'finished')
and "username" < 'HariShankar'
order by
"username" desc
limit
10
1 उत्तर
आप नीचे कोशिश कर सकते हैं- case when
एक्सप्रेशन का उपयोग करके
select "uid", "username", count(case when state = 'finished' then id end) as games_hosted
from "users" inner join "games"
on "games"."user_uid" = "users"."uid"
where "games"."state" in ('published', 'finished') and "username" < 'HariShankar'
group by "uid", "username"
order by "username" desc
limit 10
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।