特定のデータセットが収集されるサイトがあります。これは旅行代理店のウェブサイトです。宿泊施設がまだ予約可能かどうかを判断する必要があります。検索フィルター(宛先、分類、施設など)を選択しないと、機能するクエリが表示されます。見た目は次のとおりです。
SELECT `accommodation` . *
FROM `accommodation`
INNER JOIN (
SELECT `fk_accommodation` , MAX( `dateuntil` ) - ( `releasedays` *60 *60 *24 ) AS `LatestBookableTimestamp`
FROM `priceperiod`
GROUP BY `fk_accommodation`
) AS `pp` ON ( `pp`.`fk_accommodation` = `accommodation`.`id` )
WHERE `pp`.`LatestBookableTimestamp` > UNIX_TIMESTAMP( )
AND `accommodation`.`fk_country` <>0
AND `accommodation`.`classification` >=0
AND `accommodation`.`type` = 'Z'
しかし、フィルター(この場合は「ターゲット」フィルター(子供、アクティブ、休憩、ウィンタースポーツなど)を選択すると、次のクエリが表示されます。
SELECT `accommodation` . *
FROM `accommodation` , `link_at`
INNER JOIN (
SELECT `fk_accommodation` , MAX( `dateuntil` ) - ( `releasedays` *60 *60 *24 ) AS `LatestBookableTimestamp`
FROM `priceperiod`
GROUP BY `fk_accommodation`
) AS `pp` ON ( `pp`.`fk_accommodation` = `accommodation`.`id` )
WHERE `pp`.`LatestBookableTimestamp` > UNIX_TIMESTAMP( )
AND `accommodation`.`fk_country` <>0
AND `link_at`.`fk_target`
IN ( 10, 2 )
AND `link_at`.`fk_accommodation` = `accommodation`.`id`
AND `accommodation`.`classification` >=0
AND `accommodation`.`type` = 'Z'
このクエリを実行すると、次のエラーが発生します#1054 - Unknown column 'accommodation.id' in 'on clause'
。これは、FROM句で別のテーブルが使用されているためだと思います。複数のテーブルが照会されたときにINNERJOINを使用する方法について誰かが考えていますか?