これは非常に一般的なものですが、これに記載されている同様の問題を経て、これまで修正できませんでしたサイトや他の場所。マルチパートの識別子...バインドできませんでした[37000] - SQL 2005のクエリ
とにかく、フォーラムでPHPベースのアプリケーションを使用しているため、ユーザーは評判のポイントを相互に与えることができます。これらの単純な設定がどのように機能しているか分かりません。問題は、このコードはもともとはMySQL用に書かれたもので、その95%がMS SQLに変換され、現在は動作していますが、SQL 2005上では何か疑問が残っているようですジョインなどのシンタックスの矛盾があるためです。次のように サンプルクエリは、次のように
SELECT TOP 25 p.post_id, p.post_subject, p.forum_id, u.username, u.user_id,
u.user_colour, r.rep_id, r.rep_from, r.rep_to, r.rep_time, r.rep_post_id,
r.rep_point, r.rep_comment, r.enable_urls, r.rep_ip_address, r.username
FROM forum_reputations r, forum_users u
LEFT JOIN forum_posts p ON (r.rep_post_id = p.post_id)
WHERE r.rep_to = 61
ORDER BY r.rep_id DESC
データは次のとおりです。
**Forum_Posts**:
post_id (int, PK)
post_subject (varchar)
forum_id (int)
**Forum_users**:
username (varchar)
user_id (int, PK)
user_colour (varchar)
**Forum_reputations**:
rep_id (int, PK)
rep_from (int)
rep_to (int)
rep_time (int)
rep_post_id (int)
rep_point (int)
rep_comment (text)
enable_urls (int)
rep_ip_address (varchar)
username (varchar)
クエリを実行すると、SQL Serverは、次の、おなじみのエラーを吐く:
[Microsoft][ODBC SQL Server Driver][SQL Server]The multi-part identifier "r.rep_post_id" could not be bound. [37000]
私はなぜこれが起こっているのか理解するのに苦労しています。明らかにrep_post_idには問題がありますが、私はクエリの構文とカラム/テーブルの名前をチェックしていますが、すべて正しいです。SQLの予約語のように遠隔から聞こえるオブジェクトを囲むことさえしようとしました。 ]、r。[ユーザ名]など)でも違いはありません。興味深いことに、FROM句を変更してForum_usersがForum_users rの前にある場合、エラーは発生せず、データが返されますが、これは左結合を破棄してusersテーブルから上位25を引き出すため、評判テーブルに関連するエントリがあるかどうかを無視します。
出力は、リスト、ユーザのために、各担当者のエントリ(r.rep_to)は、次の表で構成すると考えられる:点を与え(r.rep_point)
ユーザ所定の担当者点の
数(r.rep_from, u.user_id, u.username)
日のポイントは、担当者ポイント(r.rep_comment)
(r.rep_time)
コメントを与えられました
フォーラムは、担当者は誰もが、これは間違って起こっているか、それを再構築することができますどのようにどこにどんな考えを持っている場合は、私は非常にそれを聞い感謝(r.rep_post_id, p.post_id, p.post_subject)
のために与えられたことを投稿してください。私はこれがおそらく非常に初歩的なものだと気づいていますが、私は本当にここの木の木が見えません!あなたが参加する暗黙的および明示的に結合し、それが正しく動作することを期待することはできません
おかげ
FROM forum_reputations r、forum_users uはデカルト結合を行います。 –
この有益なポインタのおかげで、現在カートリスの参加状況を深く掘り下げていますが、私がまだ持っていない他のコードが現れています。この問題も見ています。ヘッドスクラッチ! :) –