একক ক্যোয়ারিতে একাধিক নির্বাচনের বিবৃতি


105

আমি পিএইচপি (মাইএসকিএল) এ একটি প্রতিবেদন তৈরি করছি,

প্রাক্তন:

`select count(id) as tot_user from user_table
 select count(id) as tot_cat from cat_table
 select count(id) as tot_course from course_table`

এই মত আমার 12 টেবিল আছে।

আমি কি এটি একক ক্যোয়ারিতে তৈরি করতে পারি? আমি যদি করতাম? প্রক্রিয়া ধীর হয়ে যায়?


মাইআইএসএএম টেবিলগুলির জন্য আরও অনেক ভাল উপায় রয়েছে, আমার উত্তরটি দেখুন, যা দ্রুত।
পেন্টিয়াম

উত্তর:


252
SELECT  (
    SELECT COUNT(*)
    FROM   user_table
) AS tot_user,
(
    SELECT COUNT(*)
    FROM   cat_table
) AS tot_cat,
(
    SELECT COUNT(*)
    FROM   course_table
) AS tot_course

মাইআইএসএএম টেবিলগুলির জন্য আরও অনেক ভাল উপায় আছে, আমার উত্তর দেখুন।
পেন্টিয়াম

4
"অপেরান্ডে 1 টি কলাম (গুলি) থাকতে হবে - কেবল যদি আপনার মার্জ হওয়া টেবিলগুলি কলামের গণনায় পৃথক থাকে। তাদের ম্যাচ করা উচিত। এই উদাহরণে টেবিলের জন্য 1 কলাম।
জোন

5
এটি কেবলমাত্র যদি আপনি প্রতিটি উপ-কোয়েরি থেকে একক আউটপুট ফিরে আসেন তবেই কাজ করে
প্রচি

25

আপনি যদি মাইআইএসএএম টেবিলগুলি ব্যবহার করেন তবে দ্রুততম উপায়টি সরাসরি পরিসংখ্যানগুলির অনুসন্ধান করছে:

select table_name, table_rows 
     from information_schema.tables 
where 
     table_schema='databasename' and 
     table_name in ('user_table','cat_table','course_table')

আপনার যদি ইনোডিবি থাকে তবে আপনাকে তথ্য_সেমিমা.tables মধ্যে উল্লিখিত মানটি ভুল হিসাবে গণনা () দিয়ে জিজ্ঞাসা করতে হবে।



16

বেন জেমস দ্বারা পোস্ট করা হিসাবে আপনি অবশ্যই আমাদের একটি বাছাই সংগ্রহের বিবৃতি দিতে পারেন, তবে এটির টেবিলগুলি যতগুলি কলামের সাথে দেখা হবে। একটি বিকল্প পদ্ধতি নিম্নরূপ হতে পারে:

SELECT COUNT(user_table.id) AS TableCount,'user_table' AS TableSource FROM user_table
UNION SELECT COUNT(cat_table.id) AS TableCount,'cat_table' AS TableSource FROM cat_table
UNION SELECT COUNT(course_table.id) AS TableCount, 'course_table' AS TableSource From course_table;

এর মত একটি অ্যাপ্রোচ সম্পর্কে দুর্দান্ত জিনিসটি হ'ল আপনি স্পষ্টভাবে ইউনিয়ন বিবৃতি লিখতে পারেন এবং একটি ভিউ তৈরি করতে পারেন বা আপনার টেবিলের নামের পরিবর্তে ভেরিয়েবল ব্যবহার করে একটি প্রোক ক্যাল থেকে ক্রমাগত যুক্ত হওয়া মানগুলি ধরে রাখতে একটি টেম্প টেবিল তৈরি করতে পারেন। আমার উত্তরোত্তর নিয়ে আরও বেশি ঝোঁক রয়েছে তবে এটি ব্যক্তিগত পছন্দ এবং প্রয়োগের উপর নির্ভর করে। যদি আপনি নিশ্চিত হন যে টেবিলগুলি কখনই পরিবর্তিত হবে না, আপনি একক সারির বিন্যাসে ডেটা চান এবং আপনি টেবিলগুলি যুক্ত করবেন না। বেন জেমস এর সমাধান সঙ্গে থাকা। অন্যথায় আমি নমনীয়তার পরামর্শ দেব, আপনি সর্বদা একটি ক্রস ট্যাব স্ট্রোক হ্যাক করতে পারেন।


11
select RTRIM(A.FIELD) from SCHEMA.TABLE A where RTRIM(A.FIELD) =  ('10544175A') 
 UNION  
select RTRIM(A.FIELD) from SCHEMA.TABLE A where RTRIM(A.FIELD) = ('10328189B') 
 UNION  
select RTRIM(A.FIELD) from SCHEMA.TABLE A where RTRIM(A.FIELD) = ('103498732H')

12
এর দ্বারা কোন প্রশ্নের উত্তর দেওয়া হয়?
অলিভ

4
এটি মিগুয়েল কাস্তেনেডার ইউনিয়ন () সমাধান এবং পেন্টিয়াম 10 এর INFORMATION_SCHEMA সমাধানের সংমিশ্রণ। আপনি যে উত্তরগুলি ব্যবহার করেন তা উদ্ধৃত করুন।
হোল্ডঅফহ্যাঙ্গার 23:58

2
SELECT t1.credit, 
       t2.debit 
FROM   (SELECT Sum(c.total_amount) AS credit 
        FROM   credit c 
        WHERE  c.status = "a") AS t1, 
       (SELECT Sum(d.total_amount) AS debit 
        FROM   debit d 
        WHERE  d.status = "a") AS t2 

1

আমি জানি এটি একটি পুরানো স্ট্যাক তবে আমি এই মাল্টি-এসকিউএল নির্বাচন ক্ষেত্রে পোস্ট করব

    SELECT bp.bizid, bp.usrid, bp.website, 
ROUND((SELECT SUM(rating) FROM ratings WHERE bizid=bp.bizid)/(SELECT COUNT(*) FROM ratings WHERE bizid=bp.bizid), 1) AS 'ratings', 
(SELECT COUNT(*) FROM bzreviews WHERE bizid=bp.bizid) AS 'ttlreviews', 
bp.phoneno, als.bizname, 
(SELECT COUNT(*) FROM endorsment WHERE bizid=bp.bizid) AS 'endorses'
, als.imgname, bp.`location`, bp.`ownership`, 
(SELECT COUNT(*) FROM follows WHERE bizid=bp.bizid) AS 'followers', 
bp.categories, bp.openhours, bp.bizdecri FROM bizprofile AS bp 
INNER JOIN alluser AS als ON bp.usrid=als.userid 
WHERE als.usertype='Business'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.