الاثنين، 20 يناير 2014

[Tutorial] In-line View

بسم الله الرحمن الرحيم

ان شاء هنتناول شرح ال In-line View فى ال SQL

ايه و ظيفتها و اهميتها ؟؟
ال In-line View هى طريقة لكتابة SELECT Statement عند FROM
يعنى اكتب FROM (SELECT * FROM ) و بمعنى تانى انى استخدم ال Sub Query زى ال Table
الطريقة دى مفيده جدا فى حالة انى بعمل Complex Query
ممكن استخدمها فى انى اعمل Join معاها

امثله على ال In-Line View

اول مثال لو عايز اجيب الموظفين اللى عندهم اعلى مرتب فى كل اداره
SELECT a.last_name, a.salary, a.department_id, b.maxsal
  FROM employees a,
       ( SELECT department_id, max(salary) maxsal
         FROM employees
         GROUP BY department_id ) b
 WHERE a.department_id = b.department_id   AND a.salary = b.maxsal;

هنا انا بستخدم Agg Function جوا ال In-Line view عشان اقدر اجيب ال Maxsal و بدى ال Function اسم تانى "Alias" و ال In-Line View بديها Alias و فى ال Main Select Statement بكتب  Inline veiw Alias.Function Alias عشان استخدمها بدون Group by و اقدر اعرض معاها اكتر من Column

مثال
SELECT * 
  FROM ( SELECT deptno, count(*) emp_count
         FROM emp
         GROUP BY deptno ) emp,
       dept
 WHERE dept.deptno = emp.deptno;

و دا مثال Advanced لل DBA عشان تحسب المساحه الفاضيه فى Tablespace
column "Tablespace" format a13 column "Used MB" format 99,999,999 column "Free MB" format 99,999,999 column "Total MB" format 99,999,999 select fs.tablespace_name "Tablespace", (df.totalspace - fs.freespace) "Used MB", fs.freespace "Free MB", df.totalspace "Total MB", round(100 * (fs.freespace / df.totalspace)) "Pct. Free" from (select tablespace_name, round(sum(bytes) / 1048576) TotalSpace from dba_data_files group by tablespace_name ) df, (select tablespace_name, round(sum(bytes) / 1048576) FreeSpace from dba_free_space group by tablespace_name ) fs where df.tablespace_name = fs.tablespace_name;

ان شاء نلتقى فى تدوينه اخرى

ليست هناك تعليقات:

إرسال تعليق