گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

تمرین سی شارپ- آزمایشگاه پایگاه داده


مشابه تصویر زیر* یک فرم ویندوزی ایجاد کنید و دو مورد زیر را در آن قرار دهید:
1-  امکان نمایش نام و لوگوی ناشران و عنوان کتاب هایی که منتشر کرده اند** ،در کادرهای متنی (text Box)

2- امکان جستجو یا مرتب سازی بر اساس نام ناشر یا کتاب




*  طراحی ظاهر فرم کاملا به سلیقه شخصی دانشجو بستگی دارد و الزامی به تشابه با تصویر مثال زده شده نیست

** راهنمای اسم فیلدها و جدول ها :

pub_name از جدول publishers
logo از جدول pub_info
title از جدول titles



سررسید: پایان هفته شانزدهم (3/18)

نحوه تحویل: فولدر ایجاد شده برای پروژه  ( مثلا  WindowsFormsApplication3 ) را به نام خود تغییر نام داده و ایمیل نمایید. این فولدر حتما باید شامل فایل های solution(.sln),    Form1.cs,    Form1.Designer.cs باشد. در صورتیکه فایل های مذکور را تغییر نام نداده باشید با همین نام های پیش فرض در فولدر پروژه وجود دارند.

لطفا عنوان ایمیل را با پیشوند db در نظر بگیرید مثلا db-Irani-931234567

مباحث امتحانی آزمون پایانی-آزمایشگاه پایگاه داده

علاوه بر سرفصل های میان ترم، مباحث زیر نیز جزو موارد امتحان پایانی می باشند:

* Stored Procedures (SP)
* User Defined Functions(UDF)
* Triggers


بارم بندی :

فعالیت کلاسی یا تحویل فایل تحقیق معادل : 2 نمره

تمرین سی شارپ: 4 نمره

آزمون میان ترم: 6 نمره

آزمون پایانی بدون احتساب میانترم:  14

آزمون پایانی با احتساب میانترم: 8

پاسخ سوالات میان ترم - آزمایشگاه پایگاه داده

پایگاه داده pubs:

1- کدی بنویسید که چک کند  کدام انتشارات بیشترین تعداد کتاب را برای شرکت پابز چاپ کرده است؟ و سپس  نام انتشاراتی و همچنین نام کتاب های چاپ شده اش را نمایش بدهد
برای حل سوال در صورت نیاز میتوانید جدول کمکی ایجاد نمایید


2-کدی بنویسید که  چک کند اگر بیش از یک چهارم از کل فروش، توسط یک فروشگاه ثبت شده بود، نام آن فروشگاه را بعنوان فروشگاه برتر چاپ کند.

برای حل سوال در صورت نیاز میتوانید جدول کمکی ایجاد نمایید


•    در صورت لزوم میتوانید از Help برنامه استفاده نمایید!
-----------------------------

پاسخ ها:

1-

use pubs
declare @m int

select @m=MAX(maxorder.cnt) from ( select pub_id,count(*) as cnt from titles group by pub_id) maxorder

select titles.pub_id,pub_name,count(*) as cnt from publishers join titles on titles.pub_id=publishers.pub_id group by titles.pub_id,pub_name having COUNT(*)=@m

------------------
2-
use pubs
go
create table orderssum (id char(4) not null,name varchar(40),sumqty smallint );
go
insert into orderssum
select sales.stor_id,stores.stor_name,SUM(qty)
from stores,sales
where stores.stor_id=sales.stor_id
group by sales.stor_id,stores.stor_name;
go
declare @x float , @y smallint, @z float
set @x=(select SUM(qty) from sales)
set @z=@x/4
set @y=(select MAX(sumqty) from orderssum)
if @y > @z
select name from orderssum where sumqty in (select MAX(sumqty) from orderssum)


------------------------------------------------

پایگاه داده Northwind


1 - کدی بنویسید که  چک کند اگر سفارشات ثبت شده توسط یک کارمند، از میانگین تعداد سفارشات ثبت شده توسط همه کارمندان
 بیش تر بود، آنگاه  نام و آی دی آن کارمند و همچنین تعداد سفارشات ثبت شده توسط آن کارمند را نمایش بدهد.
. (برای ساده تر شدن کد، میتوانید فقط اولین کارمند با مشخصات مذکوررا بیابید.)

2- کدی بنویسید که  چک کند بیشترین سفارش توسط کدام مشتری ثبت شده است و نام این مشتری را در خروجی بعنوان مشتری نمونه چاپ نماید

در صورت لزوم میتوانید از راهنمای برنامه استفاده نمایید

---------------------

پاسخ ها:


1-
use northwind
declare @avg int
        select @avg = SUM(g.cnt)/COUNT(*)
        from   (  select EmployeeID , COUNT(*) as cnt from Orders    group by EmployeeID   )  g


select @avg as average


select Orders.EmployeeId, Employees.FirstName, Count(*) as AllOrder
from Orders
inner join
Employees on Orders.EmployeeID = Employees.EmployeeID
group by Orders.EmployeeId,Employees.FirstName
having Count(*) > @avg

-----------------
2-
use northwind
declare @max int

        select @max = max(g.cnt)    from
        (select CustomerID , COUNT(*) as cnt from   Orders    group by CustomerID  )  g
        select @max  as max_order

select Orders.CustomerID, customers.CompanyName, COUNT(*)
from Orders
inner join
Customers on Orders.CustomerID = Customers.customerid
group by Orders.CustomerID,Customers.CompanyName
having Count(*) = @max