Announcement

Collapse
No announcement yet.

MAX Funktion Verständnis

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MAX Funktion Verständnis

    Hallo,

    ich habe das Problem, dass ich den Größten Wert von vielen aus verschiedenen gleichartigen Tabellen brauche.

    Also ich braucht den Maximalen Wert von:
    Code:
    SELECT obj_Id from characters
    UNION
    SELECT object_id FROM items
    UNION
    SELECT clan_id FROM clan_data;
    Ich dachte es müsste folgendermassen funktionieren
    Code:
    Select max(obj_Id) from (<obige querey>)
    Leider quittiert der MySQL-Server dies mit der Fehlermeldung
    "Every derived table must have his own alias".

    Kann mir da jemand weiterhelfen?

    Gruß
    B

  • #2
    Ich tipp mal drauf das MySQL stört das die Spaltennamen unteschiedlich sind. Dies kannst du (wie die Fehlermeldung hindeutet mit einer AS-Angabe korrigieren

    SELECT obj_Id as ID from characters
    UNION
    SELECT object_id as ID FROM items
    UNION
    SELECT clan_id as ID FROM clan_data;

    Comment


    • #3
      Stimmt, das wirds sein.
      Aber mir gefällt das Union sowieso nicht, es dauert echt lang.
      Wenn ich von jeder Spalte das Max hole und dann im Programm das größte der lokalen Maxima nehme geht es wirklich signifikant schneller.

      Könnte man das nicht in SQL realisieren?

      Gruß
      B

      Comment


      • #4
        Freilich :-)

        SELECT Max(obj_Id) as ID from characters
        UNION
        SELECT Max(object_id) as ID FROM items
        UNION
        SELECT Max(clan_id) as ID FROM clan_data;

        Comment


        • #5
          Hmm ich habe es jetzt folgendermaßen versucht:
          Code:
          Select Max(ID) from (
           SELECT Max(obj_Id) as ID from characters
           UNION
           SELECT Max(object_id) as ID FROM items
           UNION
           SELECT Max(clan_id) as ID FROM clan_data
          );
          Aber die Fehlermeldung bleibt:
          "Every derived table must have his own alias".
          Irgendetwas läuft da immer noch schief.
          Ich verstehe die Fehlermeldung so, dass man die Zwischenergebnisse nicht mit Union zusammenwerfen darf, weil die Zwischenergebnisse alle ein eigenes Alias (?) brauchen.

          Ich dachte nicht, dass MySQL so zickig ist.

          Comment


          • #6
            Versuch es mal ohne Derived Query:
            Code:
             SELECT Max(obj_Id) as ID from characters
             UNION
             SELECT Max(object_id) as ID FROM items
             UNION
             SELECT Max(clan_id) as ID FROM clan_data
             ORDER BY MAX DESC;

            Comment


            • #7
              Dann kommt als Fehler:
              Unknown column MAX in order clause.



              Comment


              • #8
                ORDER BY ID natürlich

                Comment


                • #9
                  Code:
                  Select Max(ID) from (
                   SELECT Max(obj_Id) as ID from characters
                   UNION
                   SELECT Max(object_id) as ID FROM items
                   UNION
                   SELECT Max(clan_id) as ID FROM clan_data
                  ) anyaliasname;

                  Comment

                  Working...
                  X