[MySQL 3.23.X] Abfrage versionsabhängig?

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

  • [MySQL 3.23.X] Abfrage versionsabhängig?

    Guten Tag,

    ich hab gestern meine Gallery fertiggeschrieben und benutze u.a folgende Abfrage:

    SELECT *
    FROM bs_gallery AS g
    INNER JOIN bs_gallery_album AS ga ON ( ga.gallery_album_gallery = g.gallery_id )
    LEFT JOIN (

    SELECT gallery_pictures_album, count( gallery_pictures_album ) AS pics
    FROM bs_gallery_pictures
    GROUP BY gallery_pictures_album
    ) AS gp ON ( gp.gallery_pictures_album = ga.gallery_album_id )
    LEFT JOIN bs_gallery_pictures AS p ON ( p.gallery_pictures_id = ga.gallery_album_pid )
    LEFT JOIN bs_user AS u ON ( u.user_id = ga.gallery_album_uid )
    ORDER BY g.gallery_order ASC , ga.gallery_album_date DESC

    Auf meinem Computer hab ich MySQL 3.23.49.
    Bei mir funktioniert die Abfrage ohne Probleme.
    Auf meinem 1und1 Webspace funkioniert die Abfrage nicht!

    Jetzt mal unabhängig wie die Tabellen aussehen, scheint MySQL auf dem 1und1 Server nicht mit "count() und GROUP BY" zurechtzukommen!?

    Fehlermeldung ist: "#1064 - 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 'SELECT gallery_pictures_album , count( gallery_pictures_album )"

    Es ist meiner Meinung nach versionsabhängig.
    Wurden Aggregat-funktionen früher anders behandelt?
    Ich kann leider nicht rausfinden, welche Version MySQL bei 1und1 hat. (Modified: 1und1 benutzt MySQL 4.0)

    Vielen Dank schon mal!
    gruß Flip
    Zuletzt geändert von Flip7; 31.10.2007, 09:51.
    Find Parties?
    Partysuche

  • #2
    Ich kann mir fast nicht vorstellen, dass deine Uraltversion mehr kann, als die alte Version von 1&1. Aber ich kanns nicht nachvollziehen, da die älteste Version, die ich noch auf einem alten Server gefunden habe 4.1 ist.
    Aber ich glaube auch nicht, dass die Aggregat-Funktionen Probleme machen, sondern der Join mit einem Subselects. Diese werden nach meinen Informationen erst seit V.4.1 unterstützt. Aber dann dürfte das ja bei dir auch nicht laufen
    Gruss
    H2O

    Kommentar


    • #3
      kann ich mir leider auch nicht vorstellen...
      auf Home steht:
      Server version: 5.0.45-community-nt
      MySQL client version: 3.23.49

      könnte sein, dass 1und1 subselects verboten hat?
      wieso schreibt der 1und1 server dann, dass ich einen Syntax fehler habe?
      kann sein, dass die Funktion "count()" anders heißt?
      ich habe nämlich mehrere abfragen und es ist glaub ich immer count gekoppelt mit group by drinnen...

      Vielen Dank
      Find Parties?
      Partysuche

      Kommentar


      • #4
        setze mal diese Abfrage ab:

        SHOW VARIABLES LIKE "%version%"

        dann wirst du sehen, ob sub-select unterstützt wird oder nicht

        Kommentar


        • #5
          Die Client-Version ist nicht die MySQL-Version! Du hast also MySQL 5.0.45.

          Hättest du wirklich eine dreier-Version, dann wüsstest du das auch genau, denn die muss man entweder gezielt suchen, oder lange Zeit beibehalten ohne sie upzudaten.
          ich glaube

          Kommentar


          • #6
            also die %variables% abfrage brachte:
            protocol_version 10
            version 4.0.27-standard-log
            version_comment Official MySQL RPM
            version_compile_os pc-linux-gnu

            ich bin echt verzweifelt...
            Find Parties?
            Partysuche

            Kommentar


            • #7
              Damit ist ja klar, die Version auf 1&1-Server unterstützt kein sub-select!

              Kommentar


              • #8
                Okay
                Des ist natürlich schlecht!
                Aber wieso ist das ein Syntax Error?
                Wieso kommt nicht "subselects not allowed" ?
                kommt mir irgendwie komisch vor...

                Weiß jemand wie man das umschiffen kann?
                ich hab mal was von einem Join mit sich selbst gehört, aber der würde bei Aggregat-Funktionen nicht hinhauen, wenn ich mich nicht täusche!?

                bei JOINS bekomme ich doch nur bestimmte Zeilen aus der verknüpften Tabelle. Wie kann ich da dann einen count oder sum drüberlaufen lassen?

                Vielen Dank
                Find Parties?
                Partysuche

                Kommentar


                • #9
                  Original geschrieben von Flip7
                  Aber wieso ist das ein Syntax Error?
                  Wieso kommt nicht "subselects not allowed" ?
                  kommt mir irgendwie komisch vor...
                  Naja, weil es das zu der Zeit noch gar nicht gab - Wenn du ne USB-Maus in nen C64 gequetscht hättest, hätte der auch nicht gesagt "Diese zukünftige Technologie wird leider noch nicht unterstützt"

                  Weiß jemand wie man das umschiffen kann?
                  Erklär doch mal was dein Monsterquery eigentlich machen soll..
                  ich glaube

                  Kommentar


                  • #10
                    SELECT * FROM ... ist grundsätlich schlecht. Bei einem Join über vier Tabellen bringt dir das schon fast eine Anklage wegen fahrlässiger Tötung des MySQL-Servers ein.
                    Wenn du hingegen die Attribute auflisten würdest, dann könnten wir wenigstens ein paar Rückschlüsse auf die von dir verschwiegene Datenstruktur machen. Ohne diese, bzw. - wie von ministry schon gesagt - einer Erklärung dessen, was du überhaupt willst, wird dir kaum jemand helfen können.
                    Gruss
                    H2O

                    Kommentar


                    • #11
                      ja ist verständlich!

                      Aber ich hab beide Sachen nun elegant umgangen :-D
                      Folgende Abfrage unternimmt das gleiche:

                      SELECT count(*) as pics, gallery_album_id, gallery_album_titel, gallery_album_pid, gallery_album_uid, gallery_album_date,
                      gallery_id, gallery_titel, gallery_order, user_id, user_nick, p.gallery_pictures_id
                      FROM bs_gallery AS g
                      INNER JOIN bs_gallery_album AS ga ON ( ga.gallery_album_gallery = g.gallery_id )
                      LEFT JOIN bs_gallery_pictures AS gp ON ( gp.gallery_pictures_album = ga.gallery_album_id )
                      LEFT JOIN bs_gallery_pictures AS p ON ( p.gallery_pictures_id = ga.gallery_album_pid )
                      LEFT JOIN bs_user AS u ON ( u.user_id = ga.gallery_album_uid )
                      GROUP BY gallery_album_id, gallery_album_titel, gallery_album_pid, gallery_album_uid, gallery_album_date, gallery_id, gallery_titel, gallery_order, user_id, user_nick, gallery_pictures_id
                      ORDER BY g.gallery_order ASC , ga.gallery_album_date DESC

                      Und jetzt sagt bitte niemand, dass es eine Monsterabfrage war :-D !!!

                      meiner Meinung nach VIIIIEEEEL unübersichtlicher!

                      gruß und vielen Danke nochmal
                      oft löst sich das einfach auch selber, aber ich war jetzt so verzweifelt...
                      Find Parties?
                      Partysuche

                      Kommentar

                      Lädt...
                      X