Thomas: Updatebefehl erstellen

Hi Leutz

Folgendes ich möchte aus folgendem Befehl

SELECT a.Interpret, a.Titel, a.Platz
FROM top1002 AS a
LEFT  JOIN top1002 AS b ON a.KW = b.KW -1 AND a.Titel = b.Titel
WHERE a.KW =10 AND a.Jahr =2004 AND b.Interpret IS  NULL

das Resultat wie folgt updaten

die Interpreten die ausgeworfen werden sollen in der a.KW = 10 in die Spalte aussteiger ein 'raus' gesetzt bekommen.

Hat jemand eine Idee ????

  1. hi,

    Hat jemand eine Idee ????

    datenbanksystem ...?

    gruss,
    wahsaga

    1. Yo Hey...
      ja klar ist Mysql oder was meinst du ???

      1. Hallo

        Yo Hey...
        ja klar ist Mysql oder was meinst du ???

        MS Access, MS FoxPro, FileMaker Pro, Paradox, Microsoft SQL Server, Oracle, Informix, DB2, ...

        Freundliche Grüsse,

        Vinzenz

        1. MySQL 4.0 irgentwas auf einer Linuxkiste

          1. Hallo Thomas,

            MySQL 4.0 irgentwas auf einer Linuxkiste

            Schon besser ;-)

            Auf das "irgendwas" kommt es in Deinem Fall an. Ab Version 4.0.4 unterstützt MySQL Update-Operationen auf mehrere Tabellen, siehe http://www.mysql.com/doc/en/UPDATE.html, auch für LEFT JOINs. Damit ist es leicht, die SELECT-Anweisung in eine UPDATE-Anweisung umzuwandeln.

            Die verschiedenen Datenbankmanagementsysteme implementieren SQL in unterschiedlichen Umfang. So unterstützt MySQL Subselects erst ab Version 4.1 http://www.mysql.com/doc/en/Subqueries.html, Views gar erst ab 5.0 oder 5.1 http://www.mysql.com/doc/en/ANSI_diff_Views.html

            Freundliche Grüsse,

            Vinzenz

            PS: Wenn Du in den Threads der letzten Tage blätterst, so gab es einen Poster, der von Access auf MS SQL Server umsteigen sollte, einen, der sich mit Oracle auskannte, ...

            1. Ist die letzte aktuelle stable Version 4.0.18

              1. Hallo Thomas [<- so was nennt man Anrede :-) und das sehen hier viele gerne. Ich auch]

                Ist die letzte aktuelle stable Version 4.0.18

                Hast Du mal die Beispiele im MySQL Manual durchgelesen? Ist es wirklich so schwer?

                UPDATE table1
                LEFT JOIN table2 on table1.feld1 = table2.feld1
                SET table1.feldx = 'raus'
                WHERE ...

                Freundliche Grüsse,

                Vinzenz [auch so was wird gerne gesehen]

                PS
                Deine Logik habe ich übrigens nicht so ganz verstanden :-) Du vergleichst Kalenderwochen und Titel. Was ist, wenn der gleiche Titel mal mehrfach in den Charts ist?

                1. Sorry Vinzenz das ich dich nicht begruesst habe ist nicht meine Art -))))

                  Ich hab den Select Befehl schon erweitert weil ich gesehen habe das zum Beispiel It's my Life von mehren Interpreten schon gesungen wurden.

                  Du ich bin mit Mysql nicht so bewandert mach das Hobby mässig, ich habe für den LEFT JOIN Befehl schon zwei Tage gebastelt, wenn du mir den Update Befehl zusammen stellen könntest wäre ich dir sehr

                  D A N K B A R

                  1. Hallo Thomas,

                    Sorry Vinzenz das ich dich nicht begruesst habe ist nicht meine Art -))))

                    Benimm' Dich dann doch so wie es Deine Art ist ;-)

                    Ich hab den Select Befehl schon erweitert weil ich gesehen habe das zum Beispiel It's my Life von mehren Interpreten schon gesungen wurden.

                    Genau das meinte ich :-)
                    Die Erweiterung Deiner SELECT-Anweisung zeigt allerdings eher, dass Du an Deinem Datenbankdesign arbeiten solltest, schau dazu bitte in folgenden Thread [pref:t=74913&m=431389] (zwei oberhalb :))

                    So könntest Du z.B. eine Tabelle "Song" o.ä. erstellen, mit den Spalten
                    ID, Titel, Interpret, Plattenlabel, Jahr ...
                    In der Tabelle "top1002" verwendest Du statt Titel und Interpret die ID (so was nennt man Fremdschlüssel), somit musst Du nicht soviele Spalten vergleichen.

                    Du ich bin mit Mysql nicht so bewandert mach das Hobby mässig, ich habe für den LEFT JOIN Befehl schon zwei Tage gebastelt, wenn du mir den Update Befehl zusammen stellen könntest wäre ich dir sehr

                    Du musst nur einsetzen in das, was ich Dir schon vorgesetzt hatte:

                    table1 = top1002 as a
                    table2 = top1002 as b

                    =>

                    update top1002 as a
                    left join top1002 as b
                    on <genau wie in Deiner SELECT-Anweisung>
                    set a.aussteiger = 'raus'
                    where <genau wie in Deiner SELECT-Anweisung>

                    Den Rest kriegst Du schon selber hin.

                    D A N K B A R

                    Schrei nicht so *SCNR*,
                    mir fliegen ja die Ohren weg :), wenn ich das lese.

                    Schau bitte einmal in </faq/>, lies Die diese durch, handele danach und es macht allen viel mehr Spass.

                    Freundliche Grüsse,

                    Vinzenz

                    1. Danke Vinzenz es hat geklappt.