2013-10-20 11 views
0

好了,我有這樣的私人郵件系統我的工作,並在這裏是種它是如何組織的如何限制每個值的SQL選項?

ID From-ID To-ID Message Thread 
1 0 1 "blah blah blah" 1 
2 0 1 "blah blah blah, blah!" 1 
3 0 3 "hey <3>, how are you? Signed, <0>" 2 

是這樣的方式是讓你可以在一個線程擁有多條消息,所以你可以回覆。

然後在我的私人消息頁面的左側,您可以選擇要查看的線程。

所以,這將是一個按鈕,上面寫着發件人的名字,所以我用這個SQL:

mysql_query("SELECT * FROM pms WHERE to-id='".$_SESSION['id']."' ORDER BY id ASC"); 

不過,我希望它是這樣的(僞代碼)

mysql_query("SELECT * FROM pms WHERE to-id='".$_SESSION['id']."' LIMIT 1 per `thread` ORDER BY id ASC"); 

這樣它只會顯示一個鏈接到一個線程。

現在發生的事情是,它會顯示一個新的按鈕,每次有線程回覆。所以,如果有100條回覆消息,並且它們都在同一個線程中(因爲它們是「回覆」),將會有101個按鈕,這是不理想的,原因很明顯。

除了我說的那個按鈕限制外,一切正在工作。

+0

你可以在你的查詢中使用一個組來達到你想要的結果嗎? – John

回答

1

第一件事第一......你的ID列......不應該是自動遞增?只是檢查...

如果你想獲得的所有線程,你可能想要做這樣的事情......

Select distinct thread from pms 

-- then optionally... 
where to-id = '".$_SESSION['id']"' order by ID asc 

這樣一來,你就只得到每個線程的第一個實例。

+0

好吧,是的,我自動遞增,對不起回合。我會嘗試你的代碼,看看會發生什麼:)編輯:WOOT!它現在只顯示每個線程1個按鈕,但它只抓取該行的線程值,所以我不能得到用戶名:/將'distinct *'工作?我想象不是,但... – Zbee

+1

很高興聽到! 「Distinct *」可能會爲您提供所有行,因爲您從ID開始。你可以做的是「選擇不同的線程,從ID,消息,...」,這將得到不同的線程和所有期望的列與特定的行。在那裏你會擁有它。 :) – napo

+0

YAHOO!它的工作原理:D非常感謝你@napo:D – Zbee

相關問題