Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SQL Abfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von ibu400, 6 Dezember 2013.

  1. ibu400

    ibu400 Neuer Benutzer

    hier sind ja auch ein paar SQL Spezialisten. Bin leider totaler Anfänger und weiß nicht wen ich noch Fragen kann:

    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 zumindest geschafft habe ist eine komplette Liste auszugeben – mit Seriennummer, Typ, Name, E-Mail usw.

    PHP:
      $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
        "
    );
    ist das überhaupt möglich?

    danke & grüße
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Jein.

    Zuerst einmal der einfache Teil:

    Code:
    est=# create table fe_users(id int primary key, name text);
    CREATE TABLE   
    Time: 125,451 ms   
    test=*# insert into fe_users values (1,'max');
    INSERT 0 1   
    Time: 0,397 ms   
    test=*# insert into fe_users values (2,'hans');
    INSERT 0 1   
    Time: 0,245 ms   
    test=*# insert into fe_users values (3,'otto');
    INSERT 0 1   
    Time: 0,256 ms   
    test=*# create table seriennummer_typ(id int primary key, name text);
    CREATE TABLE   
    Time: 142,374 ms   
    test=*# insert into seriennummer_typ values (1, 'windoof 7');
    INSERT 0 1   
    Time: 0,561 ms   
    test=*# insert into seriennummer_typ values (2, 'windoof 8');
    INSERT 0 1
    Time: 0,211 ms
    test=*# insert into seriennummer_typ values (3, 'mysql 3');
    INSERT 0 1
    Time: 0,202 ms
    test=*# insert into seriennummer_typ values (4, 'postgresql 9.3');
    INSERT 0 1
    Time: 0,201 ms
    test=*# create table sn (id int primary key, sn text, sn_typ int references seriennummer_typ, u_id int references fe_users);
    CREATE TABLE
    Time: 171,875 ms
    test=*# insert into sn values (1, '123', 1, 1);
    INSERT 0 1
    Time: 38,629 ms
    test=*# insert into sn values (2, '234', 1, 1);
    INSERT 0 1
    Time: 0,439 ms
    test=*# insert into sn values (3, '345', 1, 1);
    INSERT 0 1
    Time: 0,398 ms
    test=*# insert into sn values (4, '111', 2, 3);
    INSERT 0 1
    Time: 0,433 ms
    test=*# insert into sn values (5, '222', 3, 2);
    INSERT 0 1
    Time: 0,385 ms
    test=*# select u.name, t.name, count(1) from sn left join fe_users on (sn.u_id=u.id) left join seriennummer_typ t on (sn.sn_typ=t.id) group by u.name, t.name;
    ERROR:  missing FROM-clause entry for table "u"
    LINE 1: ..., count(1) from sn left join fe_users on (sn.u_id=u.id) left...
      ^
    Time: 0,270 ms
    test=*# select u.name, t.name, count(1) from sn left join fe_users u on (sn.u_id=u.id) left join seriennummer_typ t on (sn.sn_typ=t.id) group by u.name, t.name;
     name |  name  | count
    ------+-----------+-------
     otto | windoof 8 |  1
     hans | mysql 3  |  1
     max  | windoof 7 |  3
    (3 rows)
    
    Time: 20,783 ms
    
    Du willst jetzt Zeilen zu Spalten machen. Das hab ich hier mal erklärt: https://www.pg-forum.de/viewtopic.php?f=66&t=4067

    Ich glaub, hier hab ich das auch schon mal erklärt: http://datenbankforum.com/threads/zeilen-als-spalten-full-outer-join.1426/
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden