0

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

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

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

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

4

2 に答える 2

2

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
于 2010-10-20T10:19:00.190 に答える
1

2つのクエリは完全に問題ありません。複数のテーブルからの出力を組み合わせるのは、あまりクリーンなアイデアではありません。

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

于 2010-10-20T10:16:33.107 に答える