0

MySQL 4 で実行されている MySQL ステートメントが多数ありますが、MySQL 5 では実行されていません。これらは、UNION と JOIN を組み合わせたステートメントです。

MySQLステートメントを単純化しようとすると、MySQL 4では実行されますがMySQL 5では実行されない次のようになりました。

SELECT
  bteamres.rank AS `rank`
FROM
  bteamres
    LEFT OUTER JOIN (btourn AS tourn) ON (bteamres.tourncode=tourn.tourncode)
WHERE
  (bteamres.nofivb1=100427)

UNION

SELECT
  bteamres.rank AS `rank`
FROM
  bteamres
    LEFT OUTER JOIN (btourn AS tourn) ON (bteamres.tourncode=tourn.tourncode)
WHERE
  (BTEAMRES.NOFIVB2=100427)

私が受け取るエラーコードは次のとおりです。

[Err] 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 'ON     (bteamres.tourncode=tourn.tourncode)
WHERE
  (BTEAMRES.NOFIVB2=100427)' at line 15

結合を削除すると、MySQL 4 と MySQL 5 の両方でリクエストが正常に機能します。

ご協力ありがとうございました。パトリック

4

1 に答える 1

1

LEFT JOIN問題はed テーブルの周りのかっこだと思います:

  • LEFT JOIN (btourn AS tourn)エラーを引き起こす
  • LEFT JOIN btourn AS tourn受け入れられます

ここで試すことができます (sqlfiddle のバグを避けるために、ユニオンを選択にラップする必要がありました): http://sqlfiddle.com/#!2/d4885/11

SELECT bteamres.rank AS `rank`
FROM      bteamres
LEFT JOIN btourn AS tourn ON bteamres.tourncode=tourn.tourncode
WHERE bteamres.nofivb1=100427

UNION 

SELECT bteamres.rank AS `rank`
FROM      bteamres
LEFT JOIN btourn AS tourn ON bteamres.tourncode=tourn.tourncode
WHERE bteamres.nofivb2=100427
于 2012-06-26T14:05:39.777 に答える