11 Veri Tabanı-I 12ilhanuysal.com/ders_notlari/veritabani/veri_tabani1... · 2014-11-13 ·...

16
Veri Tabanı-I 12.Hafta 05.05.2011 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 1 İlişkisel sorgular

Transcript of 11 Veri Tabanı-I 12ilhanuysal.com/ders_notlari/veritabani/veri_tabani1... · 2014-11-13 ·...

Veri Tabanı-I 12.Hafta

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

1

İlişkisel sorgular

GROUP BY having

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

2

Gruplayarak listelemek. Gruplama işlemi bir veya birden çok alana göre yapılabilir. Select … from arasında yazılan alanlar mutlaka GROUP BY işlemine girmelidir. Gruplanmış bir alan listede bir kez olur. Having ile gruplanmış alanlar üzerinde koşul verilebilir

SELECT c1,c2,... cn, kümeleme_fonksiyonları( ifade ) FROM tablolar WHERE where_koşulu GROUP BY c1, c2, ... cn HAVING grup_koşulu ORDER BY sıralama_kolonları

kümeleme_fonksiyonları : sum(), max(), min(), avg(), count()

GROUP BY having

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

3

-- her müşterinin yaptığı harcamalar toplamı

SELECT mno, sum(fiyat*adet) as Tutar FROM satış GROUP BY mno

-- stok tablosundaki sayısı 1 den çok olan malların grup halinde stok numarası ve kalan adet toplamı

SELECT sno, sum(adet) as Adedi FROM stok GROUP BY sno Having count(*) >1

-- stoka adına ve son kullanma tarihine göre gruplandırarak listele

SELECT stokadi, sonkultar FROM stok

GROUP BY stokadi, sonlultar ORDER BY sonkultar

-- HATALIDIR

SELECT * FROM stok GROUP BY stokadi

-- stok tablosundaki fiyatı 12 liradan fazla olan malların grup halinde stok numarasına göre gruplu bir şekilde fiyat toplamını listele

SELECT sno, sum(fiyat) FROM stok GROUP BY sno HAVING fiyat>12

GROUP BY having

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

4

-- öğrenci tablosunda her bölümün en yüksek ortalamalar

SELECT bolum, Max( vize*0.2+final*0.8) FROM ogrenci GROUP BY bolum

-- öğrenci tablosunda her bölümün, finali 50 den büyük olanlar içinden en yüksek ortalamalar

SELECT bolum, Max( vize*0.2+final*0.8) FROM ogrenci

WHERE final>50 GROUP BY bolum

-- öğrenci tablosunda her bölümün, finali 50 den büyük olanlar içinden en yüksek ortalamalar

SELECT ulke, sehir FROM ogrenci_bilgi GROUP BY ulke, sehir

İlişkisel sorgular

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

5

SELECT

tablo1.kolon1, tablo1.kolon2, …. , tablo1.kolonN,

tablo2.kolon1, tablo2.kolon2, …. , tablo2.kolonN,

tablo3.kolon1, tablo3.kolon2, …. , tablo3.kolonN,

FROM tablo1, tablo2, tablo3

WHERE tablo1.kolon1 = tablo2.kolon1 AND tablo2.kolon1 = tablo3.kolon1

Tablo1

Kolon1

Kolon2

Kolon3

Tablo2

Kolon1

Kolon2

Kolon3

Tablo3

Kolon1

Kolon2

Kolon3

İlişkisel sorgular

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

6

SELECT

stok.sno, stok.stokadı,

satış.adet AS [Satış Adedi], satış.fiyat AS [Satış Fiyatı],

(satış.adet, * satış.fiyat) as Tutar, satış.tarih AS [Satış Tarihi]

FROM stok, satış WHERE stok.sno = satış.sno

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

sno stokadı Satış adedi Satış fiyatı Tutar Satış Tarihi

İlişkisel sorgular

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

7

SELECT

stok.sno, stok.stokadı,

satış.adet AS [Satış Adedi], satış.fiyat AS [Satış Fiyatı],

(satış.adet, * satış.fiyat) as Tutar, satış.tarih AS [Satış Tarihi]

FROM stok, satış WHERE stok.sno = satış.sno AND stok.sno=101

ORDER BY satış.tarih DESC

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

sno stokadı Satış adedi Satış fiyatı Tutar Satış Tarihi

İlişkisel sorgular

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

8

SELECT

stok.sno, stok.stokadı,

satış.adet AS [Satış Adedi], satış.fiyat AS [Satış Fiyatı],

(satış.adet, * satış.fiyat) as Tutar, satış.tarih AS [Satış Tarihi],

müşteri.adsoy AS [Adı Soyadı]

FROM stok, satış, müşteri WHERE stok.sno = satış.sno AND müşteri.mno=satış.mno

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

sno stokadı Satış adedi Satış fiyatı Tutar Satış Tarihi Adı Soyadı

İlişkisel sorgular

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

9

SELECT

stok.sno, stok.stokadı,

satış.adet AS [Satış Adedi], satış.fiyat AS [Satış Fiyatı],

(satış.adet, * satış.fiyat) as Tutar, satış.tarih AS [Satış Tarihi],

müşteri.adsoy AS [Adı Soyadı]

FROM stok, satış, müşteri WHERE stok.sno = satış.sno AND müşteri.mno=satış.mno

AND satış.tarih between ‘2011-04-01’ AND ‘2011-04-31’ ORDER BY satış.tarih DESC

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

sno stokadı Satış adedi Satış fiyatı Tutar Satış Tarihi Adı Soyadı

İlişkisel sorgular

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

10

SELECT

stok.sno, stok.stokadı,

satış.adet AS [Satış Adedi], satış.fiyat AS [Satış Fiyatı],

(satış.adet, * satış.fiyat) as Tutar, satış.tarih AS [Satış Tarihi]

FROM stok, satış, müşteri WHERE stok.sno = satış.sno AND müşteri.mno=satış.mno

AND satış.tarih between ‘2011-04-01’ AND ‘2011-04-31’ AND müşteri.mno=5

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

sno stokadı Satış adedi Satış fiyatı Tutar Satış Tarihi

Takma AD (Alias)

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

11

SELECT

s.sno, s.stokadı,

st.adet AS [Satış Adedi], st.fiyat AS [Satış Fiyatı],

(st.adet, * st.fiyat) as Tutar, st.tarih AS [Satış Tarihi]

FROM stok s, satış st, müşteri m WHERE s.sno = st.sno AND m.mno=st.mno

AND st.tarih between ‘2011-04-01’ AND ‘2011-04-31’ AND m.mno=5

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

sno stokadı Satış adedi Satış fiyatı Tutar Satış Tarihi

INNER JOIN

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

12

SELECT

tablo1.kolon1, tablo1.kolon2, …. , tablo1.kolonN,

tablo2.kolon1, tablo2.kolon2, …. , tablo2.kolonN,

tablo3.kolon1, tablo3.kolon2, …. , tablo3.kolonN,

FROM tablo1 INNER JOIN tablo2 ON tablo1.kolon1 = tablo2.kolon1

INNER JOIN tablo3 ON tablo2.kolon2 = tablo3.kolon1

Tablo1

Kolon1

Kolon2

Kolon3

Tablo2

Kolon1

Kolon2

Kolon3

Tablo3

Kolon1

Kolon2

Kolon3

En pahalı malı alan müşteri bilgileri

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

13

SELECT m.* FROM stok s INNER JOIN satış st ON s.sno=st.sno

INNER JOIN müşteri m ON m.mno=st.mno

WHERE s.sno in ( select sno from stok WHERE fiyat >= ( select max(fiyat) from stok ) )

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

doğum_tarihi

mno adsoy adres Doğum_tarihi

101 Ali Can Burdur 01.01.1982

102 Mehmet Koç Muğla 06.11.1990

Belirli tarihler arasında günlük satışların tarihini ve tutarını listele

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

14

SELECT st.tarih AS [Satış Tarihi], sum(st.adet + st.fiyat ) as [Toplam Satış] FROM satış st

WHERE st.tarih>=‘2011-04-01’ AND s.tarih<=‘2011-04-30’ GROUP BY st.tarih

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

doğum_tarihi

Satış tarihi Toplam Satış

SELECT st.tarih AS [Satış Tarihi], sum(st.adet + st.fiyat ) as [Toplam Satış] FROM satış st

GROUP BY st.tarih HAVING st.tarih >=‘ 2011-04-01’ AND s.tarih <= ‘2011-04-30’

En çok alışveriş yapan müşteri bilgileri

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

15

SELECT m.* FROM satış st INNER JOIN müşteri m ON m.mno=st.mno

WHERE st.mno in ( select Top 1 mno from satış gruop by mno having sum(fiyat*adet) >=

(select max(fiyat*adet) from satış )

)

stok

sno (P.K)

stokadı

adet

fiyat

sonkultar

satış

sno(FK)

mno (F.K.)

adet

fiyat

tarih

odenen

muşteri

mno (P.K.)

adsoy

adres

doğum_tarihi

mno adsoy adres Doğum_tarihi

101 Ali Can Burdur 01.01.1982

Soru ve Önerileriniz …

05

.05

.20

11

M

uh

amm

er İL

KU

ÇA

R, M

AK

Ü-2

01

1 B

UR

DU

R

16

?