SQL Abfrage

  • Hallo,


    hier sind ja auch ein paar SQL-Freaks ;). Ich habe drei mySQL Tabellen


    1. Tabelle fe_users hast folgende Spalten: uid, firma, name, email
    2. Tabelle seriennummer hat folgende Spalten: uid, seriennummer, uid_typ, uid_fe_users
    3. Tabelle seriennummer_typ hat folgende Spalten: uid, name


    In Tabelle fe_users werden alle Userdaten gesammelt.
    In Tabelle seriennummer werden die eigentlichen Seriennummer und die Verknüpfungen zu den Userdaten und Typ verknüpft.
    In Tabelle seriennummer_typ werden die verschiedenen Typen gesammelt – z.B. Windows XP, Windows 7 usw.


    Ich bräuchte jetzt eine Abfrage die mir ausgibt:


    Firma / Name / E-Mail / Anzahl XP / Anzahl Windows 7 / Anzahl Windows 8


    Komm da irgendwie nicht weiter, was ich geschafft hab ist eine komplette Liste auszugeben – mit Seriennummer, Typ, Name, E-Mail usw.


    $result = $db->query("
    SELECT
    fe_users.firma,
    fe_users.name,
    fe_users.email,
    seriennummer.uid_typ,
    seriennummer.seriennummer,
    seriennummer_typ.typ,

    FROM seriennummer
    INNER JOIN fe_users
    ON seriennummer.uid_fe_user=fe_users.uid
    INNER JOIN seriennummer_typ
    ON seriennummer.uid_typ=seriennummer_typ.uid
    ");


    Bekomme ich so eine Abfrage Firma / Name / E-Mail / Anzahl XP / Anzahl Windows 7 / Anzahl Windows 8 überhaupt hin?

  • sowas in der Art geht:


    SQL
    SELECT usr.firma, usr.name, usr.email, snt.name, count( snt.name ) AS anzahl
    FROM seriennummer AS sn
    JOIN fe_users AS usr ON sn.uid_fe_users = usr.uid
    JOIN seriennummer_typ AS snt ON sn.uid_typ = snt.uid
    GROUP BY usr.uid, snt.uid


    Wobei Du dann aber die Antwort so bekommst:


    Code
    firma 	name 	email 	name      	   anzahl
    f111 	n111 	e111 	Windows XP 	3
    f111 	n111 	e111 	Windows 7  	1
    f222 	n222 	e222 	Windows XP 	1
    f222 	n222 	e222 	Windowx 8  	1


    Also immer eine Datenzeile pro User und Lizenztyp.


    Wenn Du die verschiedenen Versionen innerhalb eines Datensatzes haben willst, dann wird es sehr kompliziert, denn dann ist die Anzahl der Spalten im Ergebnis ja variabel.


    * war zu langsam :)*