2012-10-01 17 views
5

3 sütun questionid, replyid ve userid var.seçin ve sonra tekrar ayrı değerler seçin

questionid's from userid where userid is session[userid], öğelerini seçmek istiyorum. Ardından, buradan farklı questionid seçimlerini yapmak istiyorum.

Şu anda bu questionid Bir dizide $_SESSION['user_id'] ait olan tüm almak (ve ondan çiftleri kaldırmak) başka bir sorgu

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

ve sonra tekrar geçmesi Ama yukarıdaki adımları yapılabilir düşünüyorum kendisini sorgulayın (ve yukarıdaki adım da çalışmıyor). Aşağıda denedim ama çalışmıyor. Ben değeri o zaman bu sorguyu geçmesi çoğaltmak çalışırsanız hala gelir:

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

Peki sorgu olmalıdır?

questionid,replyid,userid 

8   ,2  ,45 

8   ,3  ,45 

9   ,8  ,41 

Ama 8,2 ve 8,3 aynı web sayfasına (bir soru iki cevabı), yinelenen soru gösterilmesini önlemek isteyen vardır ... Ben ayrı alıyordu olarak

yüzden yanlış şekilde çalışıyordu questionid ve daha sonra tekrar bir * from table where questionid seçilmiştir.

Ama sonra @ gibi Mahmoud Gamal ben

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

yaptılar Ama yine aynı yinelenen şeyi yapmıştı önerdi.

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

Bu, DISTINCT questionid, replyid, userid verecektir: Ben Bu, yazı açıklanan iki sorgularının eşdeğerdir limit 0,1

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

"GROUP BY" öğesini denediniz mi? – hjpotter92

+0

Hayır, ama şimdi deneyin ve göreceksiniz, mümkünse bana bir örnek gösterebilir misin? – netuser

cevap

1

eklendi. Ancak bu gerekli değildir, DISTINCT(questionid) içerir. Eğer distinct questionid arıyorsanız

, sen SUM, MAX veya MIN gibi diğer iki alan replyid, userid için toplama işlevleri ile GROUP BY questionid ile sona erecek.

+0

Yine de yinelenen değerler gösteriyor, çünkü tablo bu gibi (8,2,45) ve (8,3,45) ve (9,8,41). Eğer ayrı bir sorgulayıcı (8) alsanız bile, aldığımız satır hala yinelenecek – netuser

+0

@netuser - Lütfen sahip olduğunuz bazı örnek verileri ve bu sorgudan nasıl seçim yapmak istediğinizi ekleyebilir misiniz? –

+0

@netuser Düzenlememde 'SELECT DISTINCT questionid, replyid, userid 'gibi var denediniz mi? –