Summieren über Fremdschlüssel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Summieren über Fremdschlüssel

    Hallo,

    Folgendes Problem:

    ich möchte gerne zusammenzählen, wer wieviele Stunden mit seinen Jobs gehabt hat. In der Ticket-Tabelle sind die Jobs aufgelistet, und die Zeit dafür wird per id (fremdschlüssel) von der Zeit-Tabelle verknüpft.

    Wenn ich nun mit folgendem Befehl zusammenzähle, gibt es mir ja logsicherweise nur die anzahl id aus, sprich wieviele Tickets,

    PHP-Code:
    "SELECT Ticket_id, SUM(Zeit_name) FROM Zeit RIGHT JOIN Ticket ON zeit.Zeit_id = Ticket.zeit_id GROUP BY Ticket_id"
    Wie kann ich aber über den Fremdschlüssel die zeit dahinter zusammenzählen?

  • #2
    Welcome,

    bitte lesen und befolgen: http://www.php-resource.de/forum/sho...threadid=50454

    offensichtlich falsches Forum, *verschieb*

    Kommentar


    • #3
      wie sehen die tabellen aus`?
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        sum sticht mir ins auge

        hi, ich seh gerade du verwendest SUM(), wie kann man das ergebnis davon am besten auswerten?

        ich hab ehrlich gesagt keine lust das über ein mysql_fetch_row zu machen, sondern würde lieber die spalte ansprechen, aber das geht nicht(mysql_fetch_object). gibts eine andere variante oder gehts nur über den fetch_row?
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          Die Tabellen sehen so aus (natürlich stark vereinfacht)

          Ticket-DB

          Ticket_id : Ticket_name : zeit_id
          1 : Monitor rep. : 5
          2 : Server ... : 1
          3 : Drucker ... : 3

          Zeit-DB

          Zeit_id : Zeit_name
          1 : 20
          2 : 40
          3 : 60
          4 : 80
          5 :100

          Ausgabe aus der Webseite:

          Monitor rep 100 min
          Server .... 20 min
          Drucker ... 60 min


          Ich hoffe dies hilft dir

          Kommentar


          • #6
            Original geschrieben von Eltorito
            Ich hoffe dies hilft dir
            nein. weil ich habe ehrlich gesagt keinen bock mir die tabellen nun selber zu erstellen, und testdaten einzutragen, damit ich für dich einen test hätte machen könnte.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Sorry, hab dich in dem fall falsch verstanden. logisch kannst du auch die dB so haben:


              PHP-Code:
              CREATE TABLE `ticket` (
                `
              ticket_idint(11NOT NULL auto_increment,
                `
              ticket_namevarchar(255collate latin1_general_ci NOT NULL default '',
                `
              ticket_textlongtext collate latin1_general_ci NOT NULL,
                `
              ticket_datumvarchar(15collate latin1_general_ci default NULL,
                `
              ticket_protokolllongtext collate latin1_general_ci NOT NULL,
                `
              ticket_geraetidvarchar(6collate latin1_general_ci NOT NULL default '',
                `
              ticket_ansprechspersonvarchar(15collate latin1_general_ci NOT NULL default '',
                `
              ticket_poolvarchar(10collate latin1_general_ci NOT NULL default '',
                `
              ticket_monchar(2collate latin1_general_ci NOT NULL default '',
                `
              ticket_kbint(11NOT NULL default '0',
                `
              status_idint(11NOT NULL default '0',
                `
              supporter_idint(11NOT NULL default '0',
                `
              kategorien_idint(11NOT NULL default '0',
                `
              zeit_idint(11NOT NULL default '0',
                `
              spital_idint(11NOT NULL default '0',
                `
              prioritaet_idint(11NOT NULL default '0',
                
              PRIMARY KEY  (`ticket_id`)
              ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=15 ;


              -- 
              -- 
              Tabellenstruktur für Tabelle `zeit`
              -- 

              CREATE TABLE `zeit` (
                `
              zeit_idint(11NOT NULL auto_increment,
                `
              zeit_namefloat default NULL,
                
              PRIMARY KEY  (`zeit_id`)
              ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=12 ;

              -- 
              -- 
              Daten für Tabelle `zeit`
              -- 

              INSERT INTO `zeitVALUES (10);
              INSERT INTO `zeitVALUES (210);
              INSERT INTO `zeitVALUES (320);
              INSERT INTO `zeitVALUES (430);
              INSERT INTO `zeitVALUES (540);
              INSERT INTO `zeitVALUES (650);
              INSERT INTO `zeitVALUES (760);
              INSERT INTO `zeitVALUES (870);
              INSERT INTO `zeitVALUES (980);
              INSERT INTO `zeitVALUES (1090);
              INSERT INTO `zeitVALUES (11100); 
              Hoffentlich ist das nun das was du wilst!!

              Kommentar


              • #8
                Original geschrieben von TobiaZ
                bitte lesen und befolgen: http://www.php-resource.de/forum/sho...threadid=50454

                Kommentar


                • #9
                  meinst du so ..... ?

                  Code:
                  CREATE TABLE `ticket` (
                    `ticket_id` int(11) NOT NULL auto_increment,
                    `ticket_name` varchar(255) NOT NULL default '',
                    `ticket_text` longtext NOT NULL,
                    `ticket_datum` varchar(15) default NULL,
                    `ticket_protokoll` longtext NOT NULL,
                    `ticket_geraetid` varchar(6) NOT NULL default '',
                    `ticket_ansprechsperson` varchar(15) NOT NULL default '',
                    `ticket_pool` varchar(10) NOT NULL default '',
                    `ticket_mon` char(2) NOT NULL default '',
                    `ticket_kb` int(11) NOT NULL default '0',
                    `status_id` int(11) NOT NULL default '0',
                    `supporter_id` int(11) NOT NULL default '0',
                    `kategorien_id` int(11) NOT NULL default '0',
                    `spital_id` int(11) NOT NULL default '0',
                    `prioritaet_id` int(11) NOT NULL default '0',
                    PRIMARY KEY  (`ticket_id`)
                  ) TYPE=MyISAM AUTO_INCREMENT=15 ;
                  
                  INSERT INTO `ticket` VALUES (1, 'Monitor rep', '', NULL, '', '', '', '', '', 0, 0, 0, 0, 0, 0);
                  INSERT INTO `ticket` VALUES (2, 'Server', '', NULL, '', '', '', '', '', 0, 0, 0, 0, 0, 0);
                  INSERT INTO `ticket` VALUES (3, 'Drucker', '', NULL, '', '', '', '', '', 0, 0, 0, 0, 0, 0);
                  
                  
                  CREATE TABLE `ticket_zeit` (
                    `ticket_id` int(11) NOT NULL default '0',
                    `zeit_id` int(11) NOT NULL default '0',
                    PRIMARY KEY  (`ticket_id`,`zeit_id`)
                  ) TYPE=MyISAM;
                  
                  INSERT INTO `ticket_zeit` VALUES (1, 5);
                  INSERT INTO `ticket_zeit` VALUES (2, 1);
                  INSERT INTO `ticket_zeit` VALUES (3, 1);
                  INSERT INTO `ticket_zeit` VALUES (3, 2);
                  INSERT INTO `ticket_zeit` VALUES (3, 3);
                  INSERT INTO `ticket_zeit` VALUES (3, 5);
                  
                  
                  CREATE TABLE `zeit` (
                    `zeit_id` int(11) NOT NULL auto_increment,
                    `zeit_name` float default NULL,
                    PRIMARY KEY  (`zeit_id`)
                  ) TYPE=MyISAM AUTO_INCREMENT=12 ;
                  
                  INSERT INTO `zeit` VALUES (1, 0);
                  INSERT INTO `zeit` VALUES (2, 10);
                  INSERT INTO `zeit` VALUES (3, 20);
                  INSERT INTO `zeit` VALUES (4, 30);
                  INSERT INTO `zeit` VALUES (5, 40);
                  INSERT INTO `zeit` VALUES (6, 50);
                  INSERT INTO `zeit` VALUES (7, 60);
                  INSERT INTO `zeit` VALUES (8, 70);
                  INSERT INTO `zeit` VALUES (9, 80);
                  INSERT INTO `zeit` VALUES (10, 90);
                  INSERT INTO `zeit` VALUES (11, 100);
                  Code:
                  SELECT
                      t.Ticket_id,
                      SUM(z.Zeit_name)
                  FROM
                      ticket t
                          INNER JOIN ticket_zeit tz USING (ticket_id)
                              INNER JOIN zeit z USING (zeit_id)
                  GROUP BY
                      t.Ticket_id
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    ja

                    Kommentar

                    Lädt...
                    X