I have 3 columns questionid, replyid and userid.
I want to select all questionid's from userid where userid is session[userid],
And then select distinct questionid from it.
Right now I take all those questionid belonging to $_SESSION['user_id'] in an array( and remove duplicates from it) and then
I again pass another query
foreach($array as $x)
{
$query="select questionid,replyid,userid from table where questionid=$x"
}
But I think that the above steps can be done in query itself(and the above step is not working also). I tried below but its not working. If I try to pass this query then duplicate value still comes:
SELECT distinct(questionid),replyid,userid 
from table 
where userid=$_SESSION['user_id']
So what should be the query?
questionid,replyid,userid
8          ,2     ,45
8          ,3      ,45
9           ,8      ,41
But as  8,2 and 8,3 are in same webpage(one question and two answers), I want to avoid showing duplicate question...
So I was trying the wrong way as I was taking distinct questionid and then again selecting * from table where questionid was previous one.
But then as @ Mahmoud Gamal suggested I did
 SELECT distinct questionid, `answerid`, `userid`
 FROM `table` 
 WHERE  userid='$user' 
But again I had done the same duplicate thing. So I added limit 0,1
 SELECT distinct questionid, `answerid`, `userid`
 FROM `table`
 WHERE  userid='$user' 
 LIMIT 0,1
                This is the equivalent of the two queries you described in your post:
SELECT DISTINCT questionid, replyid, userid 
FROM table 
WHERE questionid IN
(
    SELECT DISTINCT questionid
    FROM table 
    WHERE userid = @user_id
)
This will give you DISTINCT questionid, replyid, userid. But this isn't by necessary, contains DISTINCT(questionid).
If you are looking for distinct questionid, you will end up with a GROUP BY questionid with aggregate functions for other two fields replyid, userid, like SUM, MAX or MIN.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With