SQL mit Count(*)

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

  • #16
    Die Klammer habe ich so aus dem Buch "jetzt lerne ich PHP 5 & MySQL 4.1 von Markt und Technik.

    Was ich bezwecke?

    http://www.sql-und-xml.de/sql-tutori...er-zeilen.html


    Update einer Tabelle mit JOIN (ANSI, Ms-SqlServer)
    UPDATE <Tabelle | View>
    SET <Name einer Spalte> = <Ausdruck aus Spalten,
    Konstanten, Funktionen>
    [, weitere Spaltennamen = Ausdruck]
    [FROM <Tabelle> [INNER | LEFT | RIGHT] JOIN <Tabelle>
    ON <Spalte-1 = Spalte-2>]
    WHERE <Bedingung>
    Tabelle1 und Tabelle2
    In der ersten habe ich eine ID als Primärschlüssel, einen Namen und eine Spalte "anzahl". In der Tabelle 2 habe ich dieselbe ID und die eine numerische Anzahl.
    Jetzt möchte ich aus den Tabelle 2 die Numerische Zahl in die Tabelle1 reinschreiben und zwar dort, wo die IDS übereinstimmen. Um beide Tabellen anzusprechen brauche ich Joins.

    Meinem verständnis nach:

    PHP-Code:
    UPDATE t1 SET t1.anzahl = (Wert aus einer anderen Tabelle wo t1.id=t2.id)
    Where (Bedingung unter der in die t1 in die spalte anzahl etwas geschrieben wirdalso where INNER JOIN t2 ON t1.id=t2.id
    Auch wenn die innere SQL-Abfrage funktioniert, so funktioniert das gesamte Update-Befehl nicht.

    Deshalb bitte ich um Hilfe. Ich kenne mich nun mal nicht so aus, dass ich auf die Lösung von allein kommen könnte, trotz Ihrer Hinweise.

    Kommentar


    • #17
      Original geschrieben von flo
      Was ich bezwecke?

      http://www.sql-und-xml.de/sql-tutori...er-zeilen.html
      na man sollte sich nicht an irgendwelchen "allgemeingültigen" Tutorials vergreifen, wo man doch weiß, dass praktisch kein DBMS die Standards wirklich 100%tig innehält~
      http://dev.mysql.com/doc/refman/5.1/en/update.html

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #18
        Ihr acht es mir nicht leicht.


        Bin da auch gelandet, hab dann dies probiert:
        You can also perform UPDATE operations covering multiple tables. However, you cannot use ORDER BY or LIMIT with a multiple-table UPDATE. The table_references clause lists the tables involved in the join. Its syntax is described in Section 13.2.7.1, “JOIN Syntax”. Here is an example:
        PHP-Code:
        UPDATE items,month SET items.price=month.price
        WHERE items
        .id=month.id
        PHP-Code:
        Update autorenartikel Set autoren.anzahl=artikel.anzahl
        WHERE autoren
        .id=artikel.id
        Ausgabe:
        You have an error in your SQL syntax near ' artikel Set autor.anzahl=artikel.anzahl
        Es wäre für mich schon wichtig, das mit dem Update richtig zu können, es ist nämlich umständlich immer via Insert-Befehl bei jedem zusätzlichem Furz ne neue Tabelle zu erstallen.

        Kommentar


        • #19
          In der Fehlermeldung steht autor.anzahl, in der Query autoren.

          Kommentar


          • #20
            Original geschrieben von flo


            Es wäre für mich schon wichtig, das mit dem Update richtig zu können, es ist nämlich umständlich immer via Insert-Befehl bei jedem zusätzlichem Furz ne neue Tabelle zu erstallen.
            ... und warum postet du nicht die Abfrage von deinem Code sondern immer eine andere. Zum Glück sagt die Fehlermeldung schon eindeutig, waran es lag

            Kommentar


            • #21
              PHP-Code:
              CREATE TABLE t2 (
                
              iid int(11NOT NULL default '0',
                
              anzahl int(5NOT NULL default '0',
                
              PRIMARY KEY  (iid),
                
              KEY iid (iid)
              TYPE=MyISAM;

              CREATE TABLE t3 (
                
              autor varchar(255NOT NULL default '',
                
              iid int(11NOT NULL auto_increment,
                
              anzahl int(5NOT NULL default '0',
                
              PRIMARY KEY  (iid),
                
              UNIQUE KEY iid (iid)
              TYPE=MyISAM
              Diese Abfrage funktioniert:
              PHP-Code:
              SELECT t2.anzahl from t2 LEFT JOIN t3 ON t3.iid t2.iid 
              Fehler
              SQL-Befehl :

              Update t3 set t3.anzahl = SELECT t2.anzahl from t2 LEFT JOIN t3 ON t3.iid = t2.iid
              inner join t2 ON t3.iid = t2.iid

              MySQL meldet:


              You have an error in your SQL syntax near 'SELECT t2.anzahl from t2 LEFT JOIN t3 ON t3.iid = t2.iid
              inner join t2 ON t3.i' at line 1
              Ich weiß nicht, wie ich es machen soll, freue mich auf die Hilfe von euch.

              Kommentar


              • #22
                sag' mal was denkst du dir denn dabei? überlege doch mal wieviele Werte man bei update... set bla = ... einsetzen darf, und wieviele Werte select... liefert?

                Oh mann, lasse lieber die Finger von Programmieren und verschone die Welt mit deinem Erzeugnis

                Kommentar


                • #23
                  Mit Select will ich alle Datensätze, die zusammenpassen ausgeben. Mit Update möchte ich in die Tabelle t3 die Spalte aus t2 einfügen. In beiden Tabellen sind genau so viele Datensätze. Ich denke, dass es gehen müsste egal wieviele Datensätze in den Tabellen vorhanden sind.

                  Mit MS Access würde die funktionierende Abfrage wie folgt aussehen:
                  PHP-Code:
                  UPDATE T2 INNER JOIN T3 ON T2.iid T3.iid SET T3.anzahl = [t2].[anzahl]; 
                  So falsch kann es net sein ...
                  Zuletzt geändert von flo; 27.03.2007, 10:11.

                  Kommentar


                  • #24
                    Vielleicht kann mir doch jemand helfen.
                    Ich hab ja zwei Tabellen:

                    t2: iid, name, anzahl
                    t3: iid, name, anzahl

                    In beiden Tabellen sind genau so viele Datensätze

                    Ich möchte, dass das Feld anzahl aus der Tabelle t3 herausgelesen wird und in die Tabelle t2 hineingeschrieben wird.

                    Ich habe jetz mit heidisql den folgenden Fehler:
                    PHP-Code:
                    SHOW COLUMNS FROM `t3`
                    SHOW KEYS FROM `t3`
                    SELECT t2.anzahl from t2 LEFT JOIN t3 ON t3.iid t2.iid
                    SHOW TABLES LIKE 
                    't2'
                    SHOW COLUMNS FROM `t2LIKE '%'
                    Update t3 set t3.anzahl SELECT t2.anzahl from t2 LEFT JOIN t3 ON t3.iid t2.iid
                    /* SQL Error: You have an error in your SQL syntax near 'SELECT t2.anzahl from t2 LEFT JOIN t3 ON t3.iid = t2.iid ' at line 1 */ 
                    Allein der Select Befehl wird korrekt ausgeführt, nur der Updatevorgang mit dem select befehl zusammen nicht.

                    Ich bin einfach ratlos.

                    Kommentar


                    • #25
                      Code:
                      UPDATE
                      t1
                      
                      SET t1.feld = t2.feld
                      
                      JOIN t2
                      ON t2.id = t1.id
                      (nicht getestet)

                      Aus http://dev.mysql.com/doc/refman/5.0/en/update.html:
                      Currently, you cannot update a table and select from the same table in a subquery.

                      Kommentar

                      Lädt...
                      X