php
  • mysql
  • 2010-03-12 107 views 0 likes 
    0

    我有一個問題(對於我來說很複雜)的MySql查詢。Mysql查詢問題

    好了,這是我需要做的:

    首先,我需要檢查一些特定的用戶收到的郵件

    $mid=$_SESSION['user']; 
    $stat1=mysql_query("SELECT id, fromid, toid, subject FROM messages WHERE 
    toid = '".$mid."' AND subject != 'not readed' GROUP BY fromid ") 
    or die(mysql_error()); 
    while ($h = mysql_fetch_array($stat1)) 
    { 
    $whosend=$h['fromid']; 
    

    ,我需要做的第二件事是檢查用戶的狀態(刪除或不刪除)誰發送了消息(「fromid」)給我的特定用戶(「toid」)。這我必須從另一個表:

    $stat2=mysql_query("SELECT id, status FROM members WHERE id='".$whosend."' AND 
    status ='1'")or die(mysql_error()); 
    while ($s = mysql_fetch_array($stat)) 
    { 
    

    然後我的問題開始出現。

    如何獲取向status status = 1的特定用戶發送消息的用戶數量?不是消息的數量,而是發送它們的用戶的總數。

    有沒有更簡單的方法來做這個查詢?我試着用連接表像

    $stat=mysql_query("SELECT memebers.id, memebers.status, messages.toid, 
    messages.fromid,messages.subject,messages.id FROM members, messages 
    WHERE messages.toid='".$mid."' AND members.status ='7' .... 
    

    但即使在此查詢我需要的用戶ID是誰這個查詢之前發送的郵件這樣就會有另一個查詢之前該連接的表。

    +0

    請發佈您的數據庫結構,這將有助於 – Josh 2010-03-12 13:32:01

    回答

    2

    所以你正在尋找狀態= 1的成員的數量發送這個其他成員($ mid)的消息?

    這樣的事情?你有GROUP BY formid和SELECT子句中沒有聚集

    $sql = "select count(distinct messages.fromid) From messages Inner Join members on members.id = messages.fromid Where messages.toid = '" . $mid . "' AND members.`status` = 1"; 
    
    +0

    感謝Aeron! 我還有一個問題。我如何爲發送消息的這些用戶中的每一個制定最近收到的消息列表? – Sergio 2010-03-12 14:02:43

    0
    SELECT id, fromid, toid, subject FROM messages WHERE toid = '".$mid."' AND subject != 'not readed' GROUP BY fromid 
    

    不可能是正確的。

    相關問題