次のクエリは、MySQL 5.1.56 で失敗します。
SELECT
shop_id, products.product_id AS
product_id, brand, title, price, image, image_width, image_height
FROM products, users LEFT JOIN
(
SELECT fav5.product_id AS product_id, SUM(CASE
WHEN fav5.current = 1 AND fav5.closeted = 1 THEN 1
WHEN fav5.current = 1 AND fav5.closeted = 0 THEN -1
ELSE 0
END) AS favorites_count
FROM favorites fav5
GROUP BY fav5.product_id
) AS fav6 ON products.product_id=fav6.product_id
WHERE products.product_id= 46876 AND users.user_id!=products.product_id
エラーは
#1054 - Unknown column 'products.product_id' in 'on clause'
user テーブルを使用しないこの変更は失敗しません。
SELECT
shop_id, products.product_id AS
product_id, brand, title, price, image, image_width, image_height
FROM products LEFT JOIN
(
SELECT fav5.product_id AS product_id, SUM(CASE
WHEN fav5.current = 1 AND fav5.closeted = 1 THEN 1
WHEN fav5.current = 1 AND fav5.closeted = 0 THEN -1
ELSE 0
END) AS favorites_count
FROM favorites fav5
GROUP BY fav5.product_id
) AS fav6 ON products.product_id=fav6.product_id
WHERE products.product_id= 46876
MySQL 5.0.67 では、どちらのクエリも失敗しません。(データベースを 5.0.67 からエクスポートし、5.1.56 にインポートしたので、構造は同一である必要があります。)
products テーブルには、int(10) 型の product_id カラムがあります。favorites テーブルには、int(10) 型の product_id 列もあります。何が起こっている?