نمایش نتایج 1 تا 7 از 7

نام تاپیک: شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

  1. #1
    کاربر دائمی آواتار bazardeh
    تاریخ عضویت
    مهر 1389
    محل زندگی
    فضای بینامتنی
    پست
    290

    شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

    با سلام
    امیدوارم منظورم درست برسونم
    من 5 جدول دارم توی sql
    می خوام یک جدول مجازی (دیدگاه) ایجاد کنم که نعداد سطر های اون جداول رو بشمرم که کد sql اش هم اینه

    select count(*) from student

    این کد این کار را انجام می دهد و حالا مشکل من اینه که چه طوری این کار را انجام بدهم
    یعنی کد شمارش این پنج جدول را بنویسم و در جدول مجازی قرار بدهم نمایش بدهم
    یا اگر راهی دیگر یا پیشنهادی دارید لطفا دریغ نفرمائید
    با تشکر

  2. #2

    نقل قول: شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

    سلام.
    برای بدست آوردن مجموع تعداد رکوردهای اون 5 جدول، میتونید بدین شکل عمل کنید:

    ;WITH cte AS(
    SELECT
    MAX(i.rows) AS TotalRows
    FROM
    sysobjects o,
    sysindexes i
    WHERE
    o.xtype = 'U' AND i.id = OBJECT_ID(o.name) AND
    o.name in ('aspnet_Profile', 'aspnet_Paths', 'aspnet_Users')
    GROUP BY
    o.name
    )
    SELECT SUM(TotalRows) FROM cte


    که در اون

    • aspnet_Profile
    • aspnet_Paths
    • و aspnet_Users

    نام جداول هستن. شما می تونید نام جداولتون رو در اون بخش از query قرار بدید تا به هدفتون برسید. در مورد Insert کردن در جدول موقت هم میتونید بدین شکل عمل کنید:


    CREATE TABLE #MyTempTable
    (
    [IndexId] INT IDENTITY (1, 1) NOT NULL,
    [Whatever] INT
    )


    و در نهایت، با یک INSERT Command میتونید داده مورد نظر رو در #MyTempTable درج کنید (که گمان نمیکنم نیازی به مثال داشته باشه).

    موفق باشید.

  3. #3
    کاربر دائمی آواتار bazardeh
    تاریخ عضویت
    مهر 1389
    محل زندگی
    فضای بینامتنی
    پست
    290

    نقل قول: شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

    جناب آقای موسوی تشکر
    مشکلم حل شد
    من برای هر یک از جداول یک دیدگاه view ساختم و از همه دیدگاه ها یک دیدگاه دیگر ساختم و مشکلم فعلا در راحترین شکل حل شده

    create view stu(stu)
    as select count(*) from student

    create view tea(tea)
    as select count(*) from teacher

    create view les(les)
    as select count(*) from lesson

    create view cla(cla)
    as select count(*) from class

    create view us(us)
    as select count(*) from user1

    create view yea(yea)
    as select count(*) from year

    create view sab(sab)
    as select count(*) from sabtnam

    create view cou(stu,tea,sab,les,cla,us,yea)
    as select stu,tea,sab,les,cla,us,yea from stu,tea,sab,les,cla,us,yea

  4. #4

    نقل قول: شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

    من برای هر یک از جداول یک دیدگاه view ساختم و از همه دیدگاه ها یک دیدگاه دیگر ساختم و مشکلم فعلا در راحترین شکل حل شده
    بنظر میرسه قصد دارین تعداد سطرهای هر جدول را در یک ستون بصورت تفکیک شده نشون بدین
    خب نیازی به چندین ویو وجود نداره یک ویو کافی هست. یعنی:
    create view cou(stu,tea,sab,les,cla,us,yea)
    as select *
    from (select count(*) from student) stu(stu),
    (select count(*) from teacher) tea(tea),
    (select count(*) from sabtnam) sab(sab),
    (select count(*) from lesson) les(les),
    (select count(*) from class) cla(cla),
    (select count(*) from user1) us(us),
    (select count(*) from year) yea(yea);


    یا حتی ساده تر:
    create view cou(stu,tea,sab,les,cla,us,yea) as
    select (select count(*) from student),
    (select count(*) from teacher),
    (select count(*) from sabtnam),
    (select count(*) from lesson),
    (select count(*) from class),
    (select count(*) from user1),
    (select count(*) from year);
    وبلاگ من (Advanced SQL Querying)

  5. #5

    نقل قول: شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

    همچنین میتونید به این مقاله زیر که در حدود یک سال پیش نوشتم مراجعه کنید:
    http://www.30sharp.com/article/13/23...%A2%D9%86.aspx
    وبلاگ من (Advanced SQL Querying)

  6. #6

    نقل قول: شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

    البته مناسبترین راه همونی هست که جناب موسوی ارائه دادن/چون راهکارهای دیگه باعث خواندن View ها یا جداول میشه . ولی در جدول Sysinedexes تمام جداول با تعداد رکوردهاشون موجوده که میتوان از آن استفاده کرد.

  7. #7

    نقل قول: شمردن سطرهای 5 جدول و قراردادن در یک جدول مجازی یا واقعی

    بنابراین با قرض کوئری که آقای موسوی ارسال کردند همراه با کمی تغییرات بر اساس مشخصاتی که کاربر مطرح کردند و نیازی که داشتن راه حل به این شکل در اومد:
    اگه احتمال این وجود داره جدولی بدون هیچگونه سطر باشه بایستی یک تابع اضافه بشه که Null را به صفر تغییر بده.
        SELECT
    MAX(CASE WHEN o.name = 'student' THEN i.rows END) AS stu,
    MAX(CASE WHEN o.name = 'teacher' THEN i.rows END) AS tea,
    MAX(CASE WHEN o.name = 'sabtnam' THEN i.rows END) AS sab,
    MAX(CASE WHEN o.name = 'lesson' THEN i.rows END) AS les,
    MAX(CASE WHEN o.name = 'class' THEN i.rows END) AS cla,
    MAX(CASE WHEN o.name = 'user1' THEN i.rows END) AS us,
    MAX(CASE WHEN o.name = 'year' THEN i.rows END) AS yea
    FROM
    sysobjects o,
    sysindexes i
    WHERE
    o.xtype = 'U' AND i.id = OBJECT_ID(o.name) AND
    o.name IN ('student', 'teacher', 'sabtnam', 'lesson', 'class', 'user1', 'year');
    وبلاگ من (Advanced SQL Querying)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •