MySQL: right syntax to use near 'fields'

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MySQL: right syntax to use near 'fields'

    Quellcode

    1. SELECT
    2. f.field_id, f.field_x,
    3. f.field_y,
    4. t.field_type_image_url
    5. FROM
    6. fields AS f
    7. RIGHT JOIN
    8. field_types AS t
    9. ON
    10. f.field_field_type_id = t.field_type_id
    11. && ((f.field_x = '13' && f.field_y = '31') OR (f.field_x = '14' && f.field_y = '31') OR (f.field_x = '15' && f.field_y = '31') OR (f.field_x = '16' && f.field_y = '31') OR (f.field_x = '17' && f.field_y = '31') OR (f.field_x = '18' && f.field_y = '31') OR (f.field_x = '19' && f.field_y = '31') OR (f.field_x = '20' && f.field_y = '31') OR (f.field_x = '21' && f.field_y = '31') OR (f.field_x = '22' && f.field_y = '31') [...])
    12. LIMIT
    13. 225
    Alles anzeigen


    Hi
    bitte nicht durch den langen Code erschrecken lassen! Der Teil nach dem "&&" in der ON-Klausel wird generiert, daher ist dieser auch ziemlich lang und monoton. Dabei nehme ich einfach alle Felder, die eine bestimmte x- und y-Koordinate haben (lasse mir diese Koordinaten vorher berechnen). 225 ist das Limit, weil die Karte eine Größe von 15*15 hat. Daher gibt es auch maximal 225 Felder. Wenn ein Feld nacher nicht in der DB gefunden wird gilt er als nicht vorhanden - ich möchte mit diesem SQL also alle vorhandenen Felder in der DB finden, die in einen bestimmten Koordinatenabschnitt gehören. Das funktioniert soweit auch und ich habe auf meinem lokalen Apache keine Probleme damit - alles funktioniert supi :)
    Im Web auf funpic.de funktioniert der SQL allerdings nicht - weder in phpmyadmin noch im Script verbaut. Habe mir die Versionen angeguckt und daran kanns kaum liegen:
    Meine PHP Version: 5.2.6
    Meine MySQL Client API version: 5.0.51b
    Funpic: Based on PHP 5.2.6
    Funpic Client API version: 5.0.51a

    Ich weiß leider nicht an was es noch liegen könnte. Der SQL bei mir in phpmyadmin ausgeführt funktioniert tadellos wie er soll. Im phpmyadmin von Funpic funktioniert der exakt gleiche Code mit exakt der gleichen Datenbank (Tabellen) nicht.



    Fehlermeldung: 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 'fields AS f RIGHT JOIN field_types AS t ON f.field_field_type_id =' at line 7




    lG
  • Hm, und wie wärs mit nem kurzen ON teil?

    Quellcode

    1. SELECT
    2. f.field_id, f.field_x,
    3. f.field_y,
    4. t.field_type_image_url
    5. FROM
    6. FIELDS AS f
    7. RIGHT JOIN
    8. field_types AS t
    9. ON
    10. f.field_field_type_id = t.field_type_id
    11. && ((f.field_x = '13' && f.field_y = '31') OR (f.field_x = '14' && f.field_y = '31') OR (f.field_x = '15' && f.field_y = '31') OR (f.field_x = '16' && f.field_y = '31') OR (f.field_x = '17' && f.field_y = '31') OR (f.field_x = '18' && f.field_y = '31') OR (f.field_x = '19' && f.field_y = '31') OR (f.field_x = '20' && f.field_y = '31') OR (f.field_x = '21' && f.field_y = '31') OR (f.field_x = '22' && f.field_y = '31') [...])
    12. LIMIT
    13. 225
    Alles anzeigen

    gleich

    Quellcode

    1. SELECT
    2. f.field_id, f.field_x,
    3. f.field_y,
    4. t.field_type_image_url
    5. FROM
    6. `FIELDS` AS f
    7. RIGHT JOIN
    8. field_types AS t
    9. ON
    10. f.field_field_type_id = t.field_type_id && f.field_x >= 13 && f.field_x <= 22 && f.field_y = 31
    11. LIMIT
    12. 225
    Alles anzeigen

    Oder falls es nicht aufeinanderfolgende zahlen sind, evtl mit "IN" prüfen.
    dev.mysql.com/doc/refman/5.1/d…-operators.html#id2961701