[SQL allgemein] join bauen

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

  • [SQL allgemein] join bauen

    PHP-Code:
    <?php
    $sql 
    =     "SELECT 
                    *
                FROM 
                    "
    .$prefix."_worksheet
                WHERE
                    YEAR(date)="
    .$this->intyear." AND
                    MONTH(date)="
    .$this->intmonth." AND
                    DAYOFMONTH(date)="
    .$intday." AND
                    eid = "
    .$_REQUEST['cuser']."";
    $worksheetquery $DBase->query($sql);
    while (
    $row mysql_fetch_object($worksheetquery)){
        
    $projektquery $DBase->query("SELECT
                                            *
                                        FROM
                                            "
    .$prefix."_projekt
                                        WHERE
                                            status = '1' AND
                                            pid = '"
    .$row->pid."'");
        
    $prow mysql_fetch_object($projektquery);
        
    $typquery $DBase->query("SELECT
                                        name
                                    FROM
                                        "
    .$prefix."_type
                                    WHERE
                                        tid='"
    .$row->tid."'");
        
    $trow mysql_fetch_object($typquery);
    }
    ?>
    hab schon zich mal versucht da ein query raus zu bauen um ladezeiten zu sparen ohne erfolg.

    würde mich um eure hilfe freuen. Kann auch gern ein "PEAR" query sein
    thx Mukraker

  • #2
    dann gib mal deine tabellen-struturen an. und wie sie verbunden sein soll(t)en.
    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


    • #3
      Code:
      Datenbank job auf localhost 
      # phpMyAdmin MySQL-Dump
      # version 2.5.1
      # [url]http://www.phpmyadmin.net/[/url] (download page)
      #
      # Host: localhost
      # Erstellungszeit: 02. Dezember 2003 um 20:28
      # Server Version: 4.0.14
      # PHP-Version: 4.3.3
      # Datenbank: `job`
      # --------------------------------------------------------
      
      #
      # Tabellenstruktur für Tabelle `wn_client`
      #
      # Erzeugt am: 03. Oktober 2003 um 14:00
      # Aktualisiert am: 02. Dezember 2003 um 13:59
      #
      
      CREATE TABLE `wn_client` (
        `cid` int(10) unsigned NOT NULL auto_increment,
        `name` varchar(255) NOT NULL default '',
        `partner` varchar(255) NOT NULL default '',
        `street` varchar(255) NOT NULL default '',
        `date` int(12) NOT NULL default '0',
        `nr` varchar(255) NOT NULL default '',
        `town` varchar(255) NOT NULL default '',
        `plz` varchar(255) NOT NULL default '',
        `telefon` varchar(255) NOT NULL default '',
        `fax` varchar(255) NOT NULL default '',
        `isdn` varchar(255) NOT NULL default '',
        `email` varchar(255) NOT NULL default '',
        `url` varchar(255) NOT NULL default '',
        `info` text NOT NULL,
        PRIMARY KEY  (`cid`)
      ) TYPE=MyISAM AUTO_INCREMENT=67 ;
      # --------------------------------------------------------
      
      #
      # Tabellenstruktur für Tabelle `wn_day`
      #
      # Erzeugt am: 03. Oktober 2003 um 14:00
      # Aktualisiert am: 02. Dezember 2003 um 17:49
      #
      
      CREATE TABLE `wn_day` (
        `id` int(10) unsigned NOT NULL auto_increment,
        `eid` int(10) NOT NULL default '0',
        `start` varchar(5) NOT NULL default '0',
        `end` varchar(5) NOT NULL default '0',
        `break` varchar(5) NOT NULL default '0',
        `date` datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (`id`)
      ) TYPE=MyISAM AUTO_INCREMENT=145 ;
      # --------------------------------------------------------
      
      #
      # Tabellenstruktur für Tabelle `wn_employee`
      #
      # Erzeugt am: 03. Oktober 2003 um 14:00
      # Aktualisiert am: 25. November 2003 um 17:33
      #
      
      CREATE TABLE `wn_employee` (
        `eid` bigint(100) NOT NULL auto_increment,
        `name` varchar(100) NOT NULL default '',
        `email` varchar(100) NOT NULL default '',
        `passwort` varchar(50) NOT NULL default '',
        `avatar` text NOT NULL,
        `icq` varchar(9) NOT NULL default '',
        `aim` varchar(100) NOT NULL default '',
        `yahoo` varchar(100) NOT NULL default '',
        `website` varchar(100) NOT NULL default '',
        `signatur` text NOT NULL,
        `sperren` char(1) NOT NULL default '0',
        `newsletter` char(1) NOT NULL default '0',
        `foto` text NOT NULL,
        `hobbies` text NOT NULL,
        `herkunft` text NOT NULL,
        `geburtstag` varchar(10) NOT NULL default '',
        `geschlecht` char(1) NOT NULL default '0',
        `usergroup` char(1) NOT NULL default '',
        `news` char(1) NOT NULL default '1',
        `date` datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (`eid`,`eid`)
      ) TYPE=MyISAM AUTO_INCREMENT=11 ;
      # --------------------------------------------------------
      
      #
      # Tabellenstruktur für Tabelle `wn_pn`
      #
      # Erzeugt am: 03. Oktober 2003 um 14:00
      # Aktualisiert am: 13. November 2003 um 17:03
      #
      
      CREATE TABLE `wn_pn` (
        `pnid` bigint(255) NOT NULL auto_increment,
        `pnfrom` varchar(100) NOT NULL default '',
        `touser` varchar(100) NOT NULL default '',
        `pntopic` varchar(100) NOT NULL default '',
        `pntext` text NOT NULL,
        `pnread` char(1) NOT NULL default '1',
        `date` datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (`pnid`)
      ) TYPE=MyISAM AUTO_INCREMENT=9 ;
      # --------------------------------------------------------
      
      #
      # Tabellenstruktur für Tabelle `wn_projekt`
      #
      # Erzeugt am: 03. Oktober 2003 um 14:00
      # Aktualisiert am: 02. Dezember 2003 um 16:49
      #
      
      CREATE TABLE `wn_projekt` (
        `pid` int(10) unsigned NOT NULL auto_increment,
        `cid` int(10) NOT NULL default '0',
        `name` varchar(255) NOT NULL default '',
        `status` int(1) NOT NULL default '0',
        `date` datetime NOT NULL default '0000-00-00 00:00:00',
        `dateend` datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (`pid`)
      ) TYPE=MyISAM AUTO_INCREMENT=133 ;
      # --------------------------------------------------------
      
      #
      # Tabellenstruktur für Tabelle `wn_type`
      #
      # Erzeugt am: 30. September 2003 um 18:13
      # Aktualisiert am: 22. Oktober 2003 um 13:48
      #
      
      CREATE TABLE `wn_type` (
        `tid` int(12) unsigned NOT NULL auto_increment,
        `name` varchar(255) NOT NULL default '',
        PRIMARY KEY  (`tid`)
      ) TYPE=MyISAM AUTO_INCREMENT=15 ;
      # --------------------------------------------------------
      
      #
      # Tabellenstruktur für Tabelle `wn_worksheet`
      #
      # Erzeugt am: 03. Oktober 2003 um 14:00
      # Aktualisiert am: 02. Dezember 2003 um 16:57
      #
      
      CREATE TABLE `wn_worksheet` (
        `wid` int(10) unsigned NOT NULL auto_increment,
        `eid` int(10) NOT NULL default '0',
        `pid` int(10) NOT NULL default '0',
        `tid` int(10) NOT NULL default '0',
        `duration` varchar(5) NOT NULL default '0',
        `info` text NOT NULL,
        `date` datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (`wid`)
      ) TYPE=MyISAM AUTO_INCREMENT=456 ;

      ich möchte folgendes auflisten
      ---------------------------------------
      projekt+zugehöriger kunde
      tätigkeit(typ)
      duration
      info
      Zuletzt geändert von mukraker; 02.12.2003, 19:33.
      thx Mukraker

      Kommentar


      • #4
        Original geschrieben von mukraker
        ich möchte folgendes auflisten
        ---------------------------------------
        projekt+zugehöriger kunde
        tätigkeit(typ)
        duration
        soll ich jetzt raten, welche tabellen benötigt werden und über welche felder die verbunden sind?
        das wäre für mich im ersten moment etwas unübersichtlich...

        sags mir einfach mal.
        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


        • #5
          schon gut. teset das mal.
          Code:
          SELECT
              *
          FROM
              wn_worksheet W
                  INNER JOIN wn_employee E ON E.eid = W.wid
                  INNER JOIN wn_projekt  P ON P.eid = W.wid
                  INNER JOIN wn_type     T ON T.eid = W.wid
          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


          • #6
            mhm
            fehlt noch irgendwie nen WHERE und die KUNDE zum Projekt
            PHP-Code:
            SELECT
                
            *
            FROM
                wn_worksheet W
                    INNER JOIN wn_employee E ON E
            .eid W.wid
                    INNER JOIN wn_projekt  P ON P
            .eid W.wid
                    INNER JOIN wn_type     T ON T
            .eid W.wid
            WHERE
                    YEAR
            (date)=2003 AND
                    
            MONTH(date)=12 AND
                    
            DAYOFMONTH(date)=AND
                    
            eid 7

            aber fehler:
            Column: 'date' in where clause is ambiguous



            Was ich hinterher über ne while ausgeben möchte:

            -projekt+kunde, typ des worksheets,
            -typ des worksheets
            -duration des worksheets
            -info des worksheets
            Zuletzt geändert von mukraker; 02.12.2003, 20:10.
            thx Mukraker

            Kommentar


            • #7
              naja,

              Column: 'date' in where clause is ambiguous
              laut aussagen der english-professorin hier im zimmer heißt ambigious 'zweideutig'. es muß w.date heißen, oder?
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                PHP-Code:
                SELECT
                    
                *
                FROM
                    wn_worksheet W
                        INNER JOIN wn_employee E ON E
                .eid W.wid
                        INNER JOIN wn_projekt  P ON P
                .eid W.wid
                        INNER JOIN wn_type     T ON T
                .eid W.wid
                WHERE
                        W
                .YEAR(date)=2003 AND
                        
                W.MONTH(date)=12 AND
                        
                W.DAYOFMONTH(date)=AND
                        
                W.eid 7
                so hatte ich es erst, macht auch mehr sin doch kamm dan gleich =
                You have an error in your SQL syntax.
                thx Mukraker

                Kommentar


                • #9
                  ohne semikolon
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    am semikolon liegt sicher nicht

                    -------------------
                    Code:
                    Fehler
                    
                    SQL-Befehl :  
                    
                    SELECT * 
                    FROM wn_worksheet W
                    INNER JOIN wn_employee E ON E.eid = W.wid
                    INNER JOIN wn_projekt P ON P.eid = W.wid
                    INNER JOIN wn_type T ON T.eid = W.wid
                    WHERE W.YEAR(
                    
                    date
                    ) = 2003 AND W.MONTH(
                    date
                    ) = 12 AND W.DAYOFMONTH(
                    date
                    ) = 2 AND W.eid = 7
                    LIMIT 0 , 30 
                    
                    MySQL meldet: 
                    
                    
                    You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '( date ) = 2003 AND W.MONTH( date ) = 12 AND W.DAYOFMONTH( date
                    Zurück
                    thx Mukraker

                    Kommentar


                    • #11
                      ähm,

                      muß das w wirklich draußen stehn und nicht vor dem date?

                      also w.date?
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        ahh

                        SQL-Befehl :

                        Code:
                        SELECT  * 
                        FROM wn_worksheet W
                        INNER  JOIN wn_employee E ON E.eid = W.wid
                        INNER  JOIN wn_projekt P ON P.pid = W.pid
                        INNER  JOIN wn_client C ON C.cid = P.cid
                        INNER  JOIN wn_type T ON T.tid = W.tid
                        WHERE YEAR( W.date )  = 2003 AND MONTH( W.date )  = 12 AND DAYOFMONTH( W.date )  = 2 AND W.eid = 7

                        schonmal kein fehler mehr

                        EDIT:
                        [code]-tags by Abraxax
                        Zuletzt geändert von Abraxax; 02.12.2003, 21:40.
                        thx Mukraker

                        Kommentar


                        • #13
                          naja,

                          in der tabelle gibts auch keine spalte dieses namens.

                          sollte cid heißen ....

                          edit: dann nehm ich das 'fauler sack' wieder raus, hast ja selbst die lösung gefunden ....
                          Zuletzt geändert von derHund; 02.12.2003, 20:55.
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            Original geschrieben von mukraker
                            mhm
                            fehlt noch irgendwie nen WHERE und die KUNDE zum Projekt
                            ich sage nur eigeninitiative...

                            eigentlich solltest du nur testen, ob eine ausgabe kommt, da ich mal die tabellen-verbindungen geraten habe, weil du so lange zum posten brauchst ....

                            auch ist es nicht gut, 'date' als feldnamen zu verwenden. 'date' ist ein reserviertes wort.

                            auch mache bitte demnächst wieder code-tags um deine queries. ausserdem solltest du sie auch mal richtig formatieren. ein beispiel hast du ja bei mir.
                            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


                            • #15
                              PHP-Code:
                              <?php
                                      $sql
                              =  "SELECT 
                                                  W.info, W.duration,
                                                  T.name,
                                                  P.name as pname,
                                                  C.name as cname, 
                                                  E.name as ename
                                              FROM 
                                                  "
                              .$prefix."_worksheet W
                                                  LEFT JOIN "
                              .$prefix."_employee E 
                                                      ON E.eid = W.eid
                                                  LEFT JOIN "
                              .$prefix."_projekt P 
                                                      ON P.pid = W.pid
                                                  LEFT JOIN "
                              .$prefix."_client C 
                                                      ON C.cid = P.cid
                                                  LEFT JOIN "
                              .$prefix."_type T 
                                                      ON T.tid = W.tid
                                              WHERE 
                                                  YEAR( W.date ) = "
                              .$this->intyear." AND 
                                                  MONTH( W.date ) = "
                              .$this->intmonth." AND 
                                                  DAYOFMONTH( W.date ) = "
                              .$this->intday.
                                                  AND W.eid = '"
                              .$this->userid."'";
                              ?>
                              für die es interessiert , so gehts!"
                              Zuletzt geändert von mukraker; 03.12.2003, 11:32.
                              thx Mukraker

                              Kommentar

                              Lädt...
                              X