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

Mssql farklı tablodan verileri toplamak


Öne çıkan mesajlar

Mesaj tarihi:
Selamlar, uğraştım didindim ama bir sonuç bulamadım.

Hatta Sql Fiddle ile oturdum sizin için basit bir şema çıkardım.

En basit olarak tablolar şunlar;

Chars -> Karakterlerin depolandığı tablo
Guilds -> Guildlerin depolandığı tablo
Kills -> Ölme ve öldürme sayılarının depolandığı tablo
GuildMembers -> Hangi karakter hangi guilde mensup burada

Şimdi yapmaya çaıştığım olay şu;

Tüm guildleri listelerken toplam üye sayısını ve üyelerin toplam öldürme sayılarını almak istiyorum. Toplam üye sayısını aldım fiddle'da ama o guilde ait toplam öldürme sayılarını aldıramadım. Help pls

http://www.sqlfiddle.com/#!3/f9626/1
Mesaj tarihi:
Guildmembers tablosu neden? Bir karakter birden fazla guilde uye olabiliyor mu? Olamiyorsa char tablosuna guild id koy yeterli.

Ayni sekilde kills tablosunun da amacini anlayamadim. Olme/oldurulmeyi de field olarak char tablosuna koyabilirsin.

Bunlari yaparsan tam emin olmamakla birlikte


select guildname, sum(kills) from guilds, chars where chars.guildid = guilds.id group by(guilds.id)


isini gorur gibi. Yanlissam duzeltirler zaten.
Mesaj tarihi:
Neyse onu hallettimde başka bir sorum var. Bu SQL'de bitmek bilmiyor ya.

Misal şöyle birşey kullanıyorum;

SELECT TOP(50)

A.Colum,
(SELECT SUM(Kill) FROM kills) AS TotalKill,
(SELECT SUM(Dead) FROM kills) AS TotalDead

FROM

Bu selectin içindeki sorgu tıpa tıp aynı sadece çekeceğim sütunlar değişik. Bunları bir şekilde tek seferde çekip 2 ayrı AS yapma şansım var mı aceba ?
  • 1 ay sonra ...
Mesaj tarihi:
Pluton said:

Neyse onu hallettimde başka bir sorum var. Bu SQL'de bitmek bilmiyor ya.

Misal şöyle birşey kullanıyorum;

SELECT TOP(50)

A.Colum,
(SELECT SUM(Kill) FROM kills) AS TotalKill,
(SELECT SUM(Dead) FROM kills) AS TotalDead

FROM

Bu selectin içindeki sorgu tıpa tıp aynı sadece çekeceğim sütunlar değişik. Bunları bir şekilde tek seferde çekip 2 ayrı AS yapma şansım var mı aceba ?


sorguyu genişlet biraz.

SELECT
a.column,
SUM(kills.Kill) AS TotalKill,
SUM(kills.Dead) AS TotalDead
FROM a, kills

yeterli. muhtemelen bi ilişki de yok a ile kill arasında.

senin sadece bir kaç tablodan sogu çekmeyi öğrenmen lazım anladığım kadarıyla.
  • 4 hafta sonra ...
Mesaj tarihi:
Pluton said:

Neyse onu hallettimde başka bir sorum var. Bu SQL'de bitmek bilmiyor ya.

Misal şöyle birşey kullanıyorum;

SELECT TOP(50)

A.Colum,
(SELECT SUM(Kill) FROM kills) AS TotalKill,
(SELECT SUM(Dead) FROM kills) AS TotalDead

FROM

Bu selectin içindeki sorgu tıpa tıp aynı sadece çekeceğim sütunlar değişik. Bunları bir şekilde tek seferde çekip 2 ayrı AS yapma şansım var mı aceba ?


Şöyle bişey yapabilirsin
Select x.TotalKill, x.TotalDead
From
(
Select Sum(Kill) As TotalKill, Sum(Dead) As TotalDead From kills
) x
Mesaj tarihi:
SELECT
G.ID, G.Name,T.MemberCount, T1.KillCount
FROM
Guilds G
OUTER APPLY (
SELECT COUNT(1) AS MemberCount
FROM GuildMembers GM
WHERE GM.GuildID = G.ID) T
OUTER APPLY (
SELECT SUM(K.TotalKill) KillCount
FROM GuildMembers GM
JOIN Kills K ON K.CharID = GM.CharID
WHERE GM.GuildID = G.ID
GROUP BY GM.GuildID ) T1
Mesaj tarihi:
Doğru çözüm "Relational Database"

Kısa çözüm ise kill tablosunda guildid de tutarsın olur biter. böylece ben x guildinde iken bir adam öldürürsem guildden çıksamda o guild'in killi sayılır.
Mesaj tarihi:
kill tablosunda guild_id'yi de tutarsan veriyi çoklamış olursun öyle yaparsan.
Asıl yapman gereken kişi ve guild_id'sinin olduğu relation tablosu oluşturup giriş çıkış tarihlerini tutman.
Böylece t anında ne oluyor bitiyor görürsün. guildkill'i falan da hesaplayabilirsin.
×
×
  • Yeni Oluştur...