1

私はSQL結合が初めてです..私は5歳のプロジェクトを持っています。今、私はそれをいくつかの新しいサーバーに展開する必要があります。そこで他のサーバーに展開します.SQLの問題に直面しています。ここにクエリがあります。

SELECT DISTINCT d.*,DATE_FORMAT(d.downloads_updated, '%c/%d/%Y') AS updated,DATE_FORMAT(d.downloads_created, '%c/%d/%Y') AS created, s2.strings_english as title, s2.strings_english as description 
FROM strings s, downloads d,
 products_has_downloads pd 
inner JOIN strings s2 ON d.downloads_description = s.strings_id WHERE d.downloads_id = pd.downloads_id AND s.strings_id = d.downloads_title AND d.downloads_status = 'Live' AND d.downloads_level = 'Public'
 ORDER BY d.downloads_updated DESC LIMIT 5

私はこのエラーが発生しています

1054 - Unknown column 'd.downloads_description' in 'on clause'

私はこのSQLクエリを書いていません.それは古いサーバーで正常に動作しています.

私はデータベースに参加するのが初めてです。誰か助けてください。

4

1 に答える 1

3

機能しない暗黙的結合構文と明示的結合構文の両方を混在させています。

テーブルがカンマで結合されている次の暗黙的な構文があります。

FROM strings s, downloads d, products_has_downloads pd 

このJOIN構文はコンマ構文よりも優先されるため、エイリアス fordownloadsON句では使用できません。

同じ構文をすべて使用してみてください。JOIN明示的な構文のみを使用するようにクエリを変更しました。

SELECT DISTINCT d.*,
  DATE_FORMAT(d.downloads_updated, '%c/%d/%Y') AS updated,
  DATE_FORMAT(d.downloads_created, '%c/%d/%Y') AS created, 
s2.strings_english as title, 
s2.strings_english as description 
FROM strings s
INNER JOIN downloads d
  ON d.downloads_description = s.strings_id
INNER JOIN products_has_downloads pd 
  on d.downloads_id = pd.downloads_id
inner JOIN strings s2 
  on s2.strings_id = d.downloads_title
WHERE d.downloads_status = 'Live' 
  AND d.downloads_level = 'Public'
ORDER BY d.downloads_updated DESC 
LIMIT 5
于 2013-02-06T11:01:44.150 に答える