ACOS & SIN & RADIANS & COS geht nicht bei mysql 3.x ?

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

  • ACOS & SIN & RADIANS & COS geht nicht bei mysql 3.x ?

    Hallo,

    ich habe mal hier berichtet das mein neuer Provider MYSQL 'nur' in der Version 3.23 anbietet. Ich hatte bereits probleme mit normalen inner joins bei denen nicht gleich die Verknüpfung folgte sondern erst später (inner join...inner join..on..on -> inner join...on...inner join...on...)

    Das Problem wurde nun behoben indem ich die inner joins angepasst habe so das sie nun auch in der älteren Version funktionieren....

    Aber, nun habe ich in meinen SQL-Statements ACOS & SIN & RADIANS & COS & usw. und diese funktionieren auch nicht! Weis jemand wie man das dennoch bewerkstelligen kann in der MYSQL 3.x ? Wie gesagt, in der 4.x funktioniert das wunderbar!?!

  • #2
    Ups, da war ich mal wieder zu voreilig!
    Das mit den COS & TAN & RADIANS funktioniert ja! Ich habe lediglich in einem SQL-Statement ein Sub-Select und das funktioniert anscheinend nicht!

    Select ......from Tabelle1.....where plz in (Select plz from.....)

    Kommentar


    • #3
      With MySQL versions prior to 4.1, it was necessary to work around or avoid the use of subqueries. In many cases, subqueries can successfully be rewritten using joins and other methods. See Section 13.2.8.11, “Rewriting Subqueries as Joins for Earlier MySQL Versions”.
      aus:
      http://dev.mysql.com/doc/mysql/en/subqueries.html

      Kommentar


      • #4
        @prego

        Ja, habe ich auch schon gelesen. Und da steht 'in den meisten Fällen' würde ein Inner join auf die 'andere' Tabelle reichen um das Problem mit den Sub-Queries zu lösen.

        Nun, bei mir leider nicht (glaube ich zumindest 99%) da die andere Tabelle Postleitzahlen beinhaltet und deren Geo-Koordinaten. D.h. dieses Sub-Select enthält aus einem bestimmten Radius alle PLZ. Also kann ich kein inner join machen da dieses Sub-Query mit einer bestimmten Formel erst alle PLZ 'sammeln' muss die in Frage kommen.
        Also kommt nur noch eine temporäre Tabelle in Frage. Nur finde ich das viel zu performance-verschwenderisch und einfach schlampig. Aber so wie ich das sehe werde ich nicht drumherum kommen können ausser jemand hier hat eine bessere Idee.......

        Kommentar


        • #5
          Also der 'kritische' Teil wäre der folgende in diesem SQL-Statement der auch über mehrer Tabellen verknüpft ist:


          Select...inner join....on...inner join....on...inner join........where kor.posta in (Select postid from geo where (ACOS((SIN(RADIANS(45.831))*SIN(RADIANS(breite))) + (COS(RADIANS(45.831))*COS(RADIANS(breite))*COS(RADIANS(laenge)-RADIANS(16.116)))) * 6378.388) <= 30)



          So, MYSQL 4.x funktioniert das wunderbar!

          In 3.23 nicht -> Subselect!
          Aber wenn ich mich nicht irre kann man dieses Problem nicht einfach durch ein weiteres inner join lösen!

          ODER ?

          Kommentar

          Lädt...
          X