以下のクエリは mysql 4.1 で動作していましたが、5.0 では動作しません:
SELECT * FROM email e, event_email ee
LEFT JOIN member m on m.email=e.email
WHERE ee.email_id = e.email_id
エラー: 1054 ('on 句' の不明な列 'e.email')
以下のクエリは mysql 4.1 で動作していましたが、5.0 では動作しません:
SELECT * FROM email e, event_email ee
LEFT JOIN member m on m.email=e.email
WHERE ee.email_id = e.email_id
エラー: 1054 ('on 句' の不明な列 'e.email')
JOIN
句内の句で以前に結合されたテーブルのみを参照できますON
。
SELECT *
FROM email e
JOIN event_email ee
ON ee.email_id = e.email_id
LEFT JOIN
member m
ON m.email = e.email
これはANSI JOINS
、元のクエリでかっこを囲むと、よりよく説明できます。
SELECT *
FROM email e,
(
event_email ee
LEFT JOIN
member m
ON m.email = e.email
)
WHERE ee.email_id = e.email_id
ご覧のとおりe.email
、括弧内にはソースがありません。そのため、解決できませんでした。
答えは、FROM ステートメントのテーブルの直後に JOIN ステートメントを配置することです。これは、結合するテーブルであるためです。
SELECT *
FROM email e
LEFT JOIN member m on m.email=e.email,
event_email ee
WHERE ee.email_id = e.email_id