"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[MYSQL] Kreuztabelle erstellen

robobimbo 13.08.2004 - 23:25 9549 7
Posts

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
Hi,

bitte um kurze Hilfe, bin jetzt schon länger am suchen und komm nicht weiter.

Ich hab drei Tabellen:

tabUser (usrID)
tabMonster (monID)
tabKills (usrID, monID, anzKills)

also klassische m:n Verknüpfung

wie Soll ein select aussehen um eine Kreuztabelle zu erreichen:

Code: PHP
Name  |  Monster1 | Monster2 | Monster3
user1 |    50     |     0    |  22        
user2 |     6     |    14    |  21
user3 |     0     |     4    |   5

Danke für Hilfe

Robo
Bearbeitet von DirtyHarry am 03.09.2004, 19:01

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
ganz versteh ich dein problem nicht, aber JOIN ??

fresserettich

Here to stay
Registered: Jul 2002
Location: hier
Posts: 5374
Zitat von tomstig
ganz versteh ich dein problem nicht, aber JOIN ??
jop mit einem join geht und keys wären auch sinnvoll

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
in access würde ich es so lösen
über eine temporäre query

Code: PHP
SELECT tabUser.uName, tabMonster.mNAME, tabKills.kills
FROM tabMonster INNER JOIN (tabUser INNER JOIN tabKills ON tabUser.uID = tabKills.uID) ON tabMonster.mID = tabKills.mID;

und dann

Code: PHP
TRANSFORM First(qryTemp.kills) AS ErsterWertvonkills
SELECT qryTemp.uName
FROM qryTemp
GROUP BY qryTemp.uName
PIVOT qryTemp.mNAME;

fresserettich

Here to stay
Registered: Jul 2002
Location: hier
Posts: 5374
in mysql müsste es so gehen:
select t.uName tm.nName tk.kills from tabUser t, tabMonster tm, tabKills tk where und halt deine bedingung
ist nur ein denkanstoss musst halt noch anpassen :)

manalishi

tl;dr
Avatar
Registered: Feb 2001
Location: Feldkirch
Posts: 5977
aus schreibfaulheit mach ich meistens

select blah,blah,blah
from blah join blah using(blah)
join blah using (blah)

für solch einfache abfragen sind zum glück keine temporary tables nötig.. der crossjoin wird doch von haus aus unterstützt...

http://www.devshed.com/c/a/MySQL/MySQL-Table-Joins/1/
Bearbeitet von manalishi am 14.08.2004, 01:21

BuSHidO

ist süß
Registered: Jul 2001
Location: galaxie
Posts: 542
nix kreuztabelle

Code: PHP
SELECT     dbo.s_kills.uID, dbo.s_kills.monID, dbo.s_kills.anzkills
FROM         dbo.s_users INNER JOIN
                      dbo.s_kills ON dbo.s_users.uID = dbo.s_kills.uID INNER JOIN
                      dbo.s_monster ON dbo.s_kills.monID = dbo.s_monster.monID

thats it

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
Hm, Nachdenkpause ich hab gebraucht - wenn wer wissen will wie man sowas ähnliches wie eine Kreuztabelle hinkriegt in MYSQL (das ja keine PIVOT Funktion kennt)

http://dev.mysql.com/tech-resources...zard/index.html
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz