Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Basit SQL sorusu


Öne çıkan mesajlar

Mesaj tarihi:
şimdi nette sql tutolarına bakıyordum da,karşıma böyle saçma bir soru geldi,basit aslında

ben böyle saçmaladım


SELECT m.title
FROM movie m
INNER JOIN casting c ON
c.movieid=m.id AND
c.actorid IN (SELECT id
FROM actor
WHERE name='Harrison Ford');



bana demişki Harrison Ford un onadığı tüm filmleri getir bakayım,ben üstteki gibi saçma bir biçimde yaptım,içime sinmedi yani.doğrusu nedir bunun?

join konusunu çok fazla kavrayamadım gibi geldiği için böyle tuto bakıyorum artık.

3 tablo var

movie actor casting
id id movieid
title name actorid
yr ord
director
budget
gross

Mesaj tarihi:
Inner join yazmana gerek yok, join le inner join ayni sey,


SELECT m.title
FROM movie m, actor a, casting c
WHERE c.movieid=m.id
AND c.actorid = a.id
AND a.name = 'Harrison Ford'

bu olur
Mesaj tarihi:
ha anladim, zaten left right ayni query de varsa, inner yazmakda iyidir rahat ayirtetmek icin query okurken, tek inner join varsa normalde anlamli degil.

ama tercihtir her zaman oyle bilmiyosan diye not olarak soyledim.

inner join le equality, yani benim yaptigim arasinda bi fark yok. Daha az sey yaziyosun, pratiktir. left right joinler de explicitly kullanman gerek.

Genelde querylerinin %90 ininda inner join kullanirsin, ama left right outer vs bunlari ozumsemen gerek tabii..

Bak burada da guzel ornekler vermis gormediysen.

http://en.wikipedia.org/wiki/Join_(SQL)
Mesaj tarihi:
yepyeni bir soru :D

sorumuz şu:Which were the busiest years for 'John Travolta'. Show the number of movies he made for each year.

normalde query lerin cevaplarını vermiyor,sadece istediği tabloyu cevap olarak veriyor,ya da query leri cevap olarak var da ben bulamamışta olabilirim.

üstteki tarzdaki sorularda bakış açım nasıl olmalı?

bu arada bu soruya şu tarz bir cevap vermiş

cevap


SELECT yr,COUNT(title) FROM
movie JOIN casting ON movie.id=movieid
JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr
HAVING COUNT(title)=(SELECT MAX(c) FROM
(SELECT yr,COUNT(title) AS c FROM
movie JOIN casting ON movie.id=movieid
JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr) AS t
)



daha basiti var mıdır yoksa böyle anlamak için kıvranıcakmıyım illaki
Mesaj tarihi:
Cok kotu o

SELECT yr, count(m.yr) as yearcnt
FROM movie m, actor a, casting c
WHERE c.movieid=m.id
AND c.actorid = a.id
AND a.name = 'John Travolta' ORDER BY yearcnt GROUP BY yr LIMIT 1

Bunun olmasi gerek, denemek gerek tabii
×
×
  • Yeni Oluştur...