PDA

View Full Version : کدای مربوط به پرس و جو



naserzadeh
پنج شنبه 09 خرداد 1392, 20:12 عصر
سلام دوستان سوال درسی نیست من دارم sql یاد میگیرم روی جدولهای تگی راحت میتونم حل کنم ولی وقتی جداول بیشت راز 2 تا میشه هنگ میکنم
ما یک دیتابیس داریم شامل 4 جدول
جدول s شامل جدول تولید کنندگان هستش

s(s#,sname,city)
جدول pشامل جدول محصولات هستش

p(p#,pname,color)
جدول j شامل اطلاعات مربوط به پروژه های ساختمانی هستش

j(j#,jname,city)
و جدول spjجدول کلی هستش

spj(s#,p#,j#,qty)

1- حالا اگه بخوام کد تولید کنندگانی را پیدا کنم که محصول سیمان فروخته اند اینجوری حساب میکنم

SELECT s# FROM spj,p
WHERE pname='سیمان' AND spj,p=p,p#

2- نام تولید کنندگان یکه محصول گچ نفروخته اند

SELECT sname FROM spj,p
WHERE pname NOT LIKE 'گچ'

حالا این سوالات مربوط میشه به ترکیب جداول که من روشون هنگ کردم

3- لیستی از تولید کنندگان و تعداد محصولات فرخته شده هریک از آنها
4- کد تولید کنندگانی که 3 محصول مختلف فرخته باشند
5- کد تولید کنندگانی که کلیه محصولات را فروخته باشند
6- نام تولید کنندگانی که کلیه محصولات را فروخته اند
7-کد محصولاتی که برای بیش از 7 پروژه محتلف تهران فرخته شده اند.
8- نام پروژه ای که برای آنها بیشتر از 20 هزارکیلوگرم سیمان خریداری شده
9- نام پروژه های که تنها تولید کنندگان تهرانی در آنها همکاری داشته اند
10- نام پروژه هایی که هیچ تولید کننده تهرانی در آنها همکاری نداشته


??????????????????????

naserzadeh
پنج شنبه 09 خرداد 1392, 21:27 عصر
میشه از like استفاده کرد و برای شرطا از exsist??????

naserzadeh
پنج شنبه 09 خرداد 1392, 22:49 عصر
کسی نیسن راهنمایی کنه

naserzadeh
جمعه 10 خرداد 1392, 09:50 صبح
3- لیستی از تولید کنندگان و تعداد محصولات فرخته شده هریک از آنها


SELECT sname sum(qty) FROM p,spj
GROUP_BY sname

این درسته

rasoul_par
شنبه 11 خرداد 1392, 03:15 صبح
3-

select s.sname, p.pname, count(p.pid)
from spj, s, p
where
s.sid = spj.sid
and
p.pid = spj.pid
group by s.sname, p.pname

rasoul_par
شنبه 11 خرداد 1392, 03:28 صبح
4-

select s.sname
from s
where
(
select count(distinct spj2.pid)
from spj spj2
where
spj2.sid = s.sid
having count(distinct spj2.pid) > 2
)

rasoul_par
شنبه 11 خرداد 1392, 11:36 صبح
5-

select distinct spj.sid
from spj
where not exists(
select p.pid
from p
where not exists(
select spj1.sid
from spj spj1
where
spj1.sid = spj.sid and
spj1.pid = p.pid))

rasoul_par
شنبه 11 خرداد 1392, 11:37 صبح
6-

select distinct s2.sname
from spj, s s2
where
s2.sid = spj.sid and
not exists(
select p.pid
from p
where not exists(
select spj1.sid
from spj spj1
where
spj1.sid = spj.sid and
spj1.pid = p.pid))