Toon posts:

[MySQL] Tellen en vergelijken binnen twee tabellen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb twee tabellen:

KILLS
id (int)
killer (int)
victim (int)
weapon (int)
date (bigint)

PLAYERS
id (int)
name (str)

Er zitten nog meer velden in de tabellen maar die zijn nu niet van belang :) .

Je snapt al dat ik van een gameserver bijhou wie wie killt waarmee en wanneer. Nu wil ik met een SQL-query het volgende resultaat uit de database halen:

IDKillsDeaths
(players.id)(kills)(deaths)


Na lang zoeken ben ik op deze query terecht gekomen:

SELECT q1.player PLAYER, q1.kills KILLS, q2.deaths DEATHS
FROM (

SELECT A1.id PLAYER, COUNT( A2.id ) KILLS
FROM players A1, kills A2
WHERE A2.killer = A1.id
AND A2.victim != A1.id
GROUP BY A1.id
)q1, (

SELECT B1.id PLAYER, COUNT( B2.id ) DEATHS
FROM players B1, kills B2
WHERE B2.victim = B1.id
AND B2.killer != B1.id
GROUP BY B1.id
)q2


Nu krijg ik het correcte aantal kills terug, maar deaths is telkens een vast getal (namelijk 142) :( . Wat doe ik fout?

Verwijderd

code:
1
2
3
4
5
SELECT 
   players.id,
   (SELECT COUNT(*) FROM kills WHERE killer = players.id) AS kills,
   (SELECT COUNT(*) FROM kills WHERE victim = players.id) AS deaths
FROM players


Edit: ik denk dat je de suidices er niet bij wilt? Dan wordt het:

code:
1
2
3
4
5
SELECT 
   players.id,
   (SELECT COUNT(*) FROM kills WHERE killer = players.id AND victim != players.id) AS kills,
   (SELECT COUNT(*) FROM kills WHERE victim = players.id AND killer != players.id) AS deaths
FROM players

[ Voor 46% gewijzigd door Verwijderd op 28-04-2006 12:04 ]