質問

PHPでパラメーター化されたクエリを使用しています。次の2つのクエリがあります。

SELECT username,question_text 
FROM questions,users 
WHERE questions.question_id = 4 AND questions.user_id = users.user_id

SELECT username, post_text 
FROM posts,users WHERE posts.question_id = 4 
AND posts.user_id = users.user_id ORDER BY posts.post_id ASC

要するに、質問は「投稿」テーブルで議論されており、質問_IDによって参照されています。

PHPコードには冗長コードがあります。なぜなら、これらの2つのクエリから必要な結果を取得するためにデータベースを一度クエリするのに十分なMySQLがわからないからです。

私がそれをうまくやっていて、私のPHPコードの冗長な部分に対処する方法はありますか、それともこれを達成するより良い方法はありますか?

役に立ちましたか?

解決

Where句の列を一致させる代わりに結合を使用します

SELECT username,question_text 
FROM questions INNER JOIN users on questions.user_id = users.user_id
WHERE questions.question_id = 4

SELECT username, post_text 
FROM posts INNER JOIN users on posts.user_id = users.user_id 
WHERE posts.question_id = 4 
ORDER BY posts.post_id ASC

他のヒント

2つのクエリはまったく問題ありません。いくつかのテーブルからの出力を組み合わせることは、それほどきれいではありません。

Whereで使用するすべてのフィールドにすべての結合されたインデックスがあるかどうかを確認するだけで、非常に高速になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top