2012-05-04 41 views
1

OKみんな、私はここで少し助けが必要です! PHPとmysqlを使って、ユーザーがコメントを追加できるコメントセクションを作った。最初に、ページはItemIDに基づいており、正しい項目を表示します。彼らがコメントを追加するとき、私は彼らのユーザー名とItemIDをとり、comment.usernameとmessageailmentIDとしてコメントテーブルに入れます。したがって、ページが正しく表示され、コメントセクションがうまく機能します。ただし、SQLクエリを正しく取得できない場合があります。私は運がない、多くのバリエーションを試しました。誰かがそのItemIDの下に投稿したコメントは、そのItemID(特にmessageailmentID)のコメントだけを表示するようにしたい。私のコメントのセクションで私を助けてくださいSQLクエリ

MYクエリは範囲が、ここで私が現時点で持っているものです。

SELECT `comment`.messageID, `comment`.message, `comment`.username, `comment`.messageailmentID, Items.ItemID 
FROM `comment`, Items 
WHERE varItemID = `comment`.messageailmentID 

EDIT(Dreamweaverを使用し、varItemIDは、基本的には$ _GET [ 'Items.ItemID']です):一例として、ユーザはアイテムをitemdetails.php?ItemID = 8に移動するアイテムをクリックする。コメントを残すと、comment.messageailmentIDにItems.ItemIDが追加されます。

テーブル列の重要な部分は、このです:

アイテム:CommentID、メッセージ、comment.username、(アイテムIDページです)messageailmentID

varItemID ISN:

コメントをITEMID列はありますが、$ _GET ['ItemID']は実行されますが、これは別のクエリで実行されるためこのクエリでは不要です。

答えて

1

クエリがすべての行をフェッチしています。

あなたが使用する必要があります。

  • JOIN句は、テーブル間の関係を指定します。
  • WHERE句を使用して、取得する特定の項目を指定します。

これを試してみてください:左を使用して

SELECT 
    comment.messageID, 
    comment.message, 
    comment.username, 
    comment.messageailmentID, 
    Items.ItemID 
FROM Items 
LEFT JOIN comment 
ON Items.ItemID = comment.messageailmentID 
WHERE Items.ItemID = 42 

は参加コメントがない場合でも、それはまだ1行を返すことを意味します。あなたがこれを望まないなら、INNER JOINを使用してください。

+0

あなたの雷の応答に感謝します。だから私はこのようにしてみました、そして、左側の結合varItemIDが未知の列であるというエラーが表示されます。何か案は? – micker

+0

@micker:おそらく 'varItemId'という列は' Items'テーブルに存在しません。質問を編集してテーブル定義を追加し、可能であれば、アイテムがデータベース内のコメントとどのように関係しているか(つまり、関係に使用されている列)の説明を追加してください。 –

+0

私は少し質問を編集して、それを少しでもクリアしたいと思っていました。うーん、On Items.varItemIDは$ _GET ['ItemID']であり、列ではありません。それについて申し訳ありません!しかし、私はまだ結合が適切に動作するように見えることはできません。 (私は単なる死人のためにSQlのクエリを読んだことがありますが、なんらかの理由でそれらの結合が私にとって難しいです) – micker

0

SELECT comment.messageID, comment.message, comment.username, comment.messageailmentID, Items.ItemID 

FROM comment, Items 

WHERE Items.ItemID = comment.messageailmentID and Items.ItemID = ". $_GET['Items.ItemID'] 
+0

応答光線ありがとうございます。しかし、私は過去に同じ質問をしていましたが、あなたが私の質問に答えても役に立たなかったのです。 – micker

0

はあなたに私は自分の愚かさを把握助けるためのみんなありがとう!試してみてください作品私が使用するクエリはこれです:

SELECT `comment`.messageID, `comment`.message, `comment`.username 
    , `comment`.ItemID, Items.ItemID 
    FROM Items 
INNER JOIN `comment` 
    ON Items.ItemID = `comment`.ItemID 
WHERE Items.ItemID = varItemID 

varItemID$_GET['ItemID']です。

関連する問題