[MYSQL] Kreuztabelle erstellen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_kreuztabelle_erstellen_121900/page_1 - zur Vollversion wechseln!


DirtyHarry schrieb am 13.08.2004 um 23:25

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


tomstig schrieb am 13.08.2004 um 23:52

ganz versteh ich dein problem nicht, aber JOIN ??


fresserettich schrieb am 13.08.2004 um 23:58

Zitat von tomstig
ganz versteh ich dein problem nicht, aber JOIN ??
jop mit einem join geht und keys wären auch sinnvoll


DirtyHarry schrieb am 14.08.2004 um 00:18

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 schrieb am 14.08.2004 um 00:40

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 schrieb am 14.08.2004 um 01:03

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/


BuSHidO schrieb am 16.08.2004 um 11:06

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 schrieb am 29.08.2004 um 23:05

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




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025