2012-10-01 26 views
5

私は3列questionid,replyidおよびuseridを持っています。別の値を選択してもう一度選択してください

すべてを選択したいquestionid's from userid where userid is session[userid]、 それから別のquestionidを選択してください。

今私は、配列内の$_SESSION['user_id']に属するすべてのものをquestionidを取る(およびそれから重複を削除)してから 私は再び別のクエリに

foreach($array as $x) 
{ 
$query="select questionid,replyid,userid from table where questionid=$x" 
} 

を渡ししかし、私は上記の手順がで行うことができると思いますクエリ自体(と上記の手順はでも動作しません)。私は以下を試しましたが、動作しません。私は値を複製し、このクエリを渡すしようとした場合 まだ来る:

SELECT distinct(questionid),replyid,userid 
from table 
where userid=$_SESSION['user_id'] 

だから何がクエリすべきですか?

questionid,replyid,userid 

8   ,2  ,45 

8   ,3  ,45 

9   ,8  ,41 

しかし8,28,3と同じウェブページ(一つの質問と2つの答え)に、私は重複した質問が表示されないようにしたいされている...

だから私は、私は明確な取っていたとして、間違った方法をしようとしていましたquestionidを選択し、再度* from table where questionidを選択してください。

しかし、その後@としてマフムード・ガマルは私が同じ重複事を行っていた再び

SELECT distinct questionid, `answerid`, `userid` 
FROM `table` 
WHERE userid='$user' 

をしました。しかし示唆しました。だから私はlimit 0,1

SELECT distinct questionid, `answerid`, `userid` 
FROM `table` 
WHERE userid='$user' 
LIMIT 0,1 
+0

あなたは 'GROUP BY'を試しましたか? – hjpotter92

+0

いいえ、しかし今すぐ試してみて、可能ならば私に例を教えてもらえますか? – netuser

答えて

1

を追加しましたこれは、あなたの記事で説明した2つのクエリと同等です:

SELECT DISTINCT questionid, replyid, userid 
FROM table 
WHERE questionid IN 
(
    SELECT DISTINCT questionid 
    FROM table 
    WHERE userid = @user_id 
) 

これはあなたにDISTINCT questionid, replyid, useridを与えるだろう。しかしこれは必要ではなく、DISTINCT(questionid)を含んでいます。

あなたがdistinct questionidを探しているなら、あなたはSUMMAXまたはMINのように、他の二つのフィールドreplyid, useridのための集約関数でGROUP BY questionidになってしまいます。

+0

これはテーブルが(8,2,45)、(8,3,45)、(9,8,41)のように重複した値を示しています。私たちが得る行は依然として重複しています – netuser

+0

@netuser - あなたが持っているサンプルデータとそのクエリからどのように選択したいかを追加してください。 –

+0

@netuser私の編集のように 'SELECT DISTINCT questionid、replyid、userid'を試しましたか? –

関連する問題