2012-10-01 17 views
5

Tengo 3 columnas questionid, replyid y userid.seleccione y vuelva a seleccionar valores distintos

Quiero seleccionar todos questionid's from userid where userid is session[userid], Y luego seleccionar distinto questionid de él.

Ahora me tomo todos los questionid perteneciente a $_SESSION['user_id'] en una matriz (y eliminar duplicados de ella) y luego me pasaré otra consulta

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

pero creo que los pasos anteriores se pueden realizar en consulta en sí (y el paso anterior no funciona también). Intenté a continuación, pero no está funcionando. Si trato de pasar esta consulta a continuación, duplicar el valor viene siendo:

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

Entonces, ¿cuál debería ser la consulta?

questionid,replyid,userid 

8   ,2  ,45 

8   ,3  ,45 

9   ,8  ,41 

Pero como 8,2 y 8,3 están en misma página web (una pregunta y dos respuestas), que quieren evitar mostrar pregunta duplicado ...

así que estaba tratando de manera equivocada como yo estaba tomando distinta questionid y otra vez seleccionando * from table where questionid fue el anterior.

Pero entonces como @ Mahmoud Gamal sugirió que hice

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

Pero una vez más que había hecho lo mismo por duplicado. Por lo que añade limit 0,1

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

¿Has intentado 'GROUP BY'? – hjpotter92

+0

no, pero lo intentaré ahora y lo veré, ¿puedes mostrarme un ejemplo si es posible? – netuser

Respuesta

1

Esto es el equivalente a las dos consultas que ha descrito en su mensaje:

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

Esto le dará DISTINCT questionid, replyid, userid. Pero esto no es necesario, contiene DISTINCT(questionid).

Si está buscando distinct questionid, el resultado final será con un GROUP BY questionid con funciones de agregado de otros dos campos replyid, userid, como SUM, MAX o MIN.

+0

Ya muestra valores duplicados, porque la tabla es así (8,2,45) y (8,3,45) y (9,8,41) ... por lo tanto, incluso si obtiene el questionid desinflado (8), el fila que obtenemos seguirá siendo duplicada – netuser

+0

@netuser - ¿Puede agregar algunos datos de muestra que tenga y cómo le gustaría que los seleccione de esa consulta? –

+0

@netuser ¿Has probado 'SELECT DISTINCT questionid, replyid, userid' como en mi edición? –

Cuestiones relacionadas