mysql seçmek ve nerede çeşitli tablolar üzerinde (çok zor)

0 Cevap php

Ben (feryat listelenen) 4 Tablolar ve gerekir:

  1. Yasaklı kullanıcıların olmadan Room 3 son 10 Sohbetleri olsun
  2. fromuserid için takma göstermek
  3. HIDE Kullanıcılar $ kimliği masa "GİZLE" görmek sevmiyorum

Tablo 1 "sohbetler"

ID(autoinc)   fromuserid   roomid   text
 1               23          3      bla
 2               14          1      bla
 3               11          3      bal

Tablo 2 "kullanıcı" / kısa /

ID(autoinc)   nickname   banned
1             chris        0
2             paul         1     // 1 = banned

Tablo 3 "gizlemek"

ID(autoinc)   orguser    hideuser
1             12          3
2             33          12

Sağ şimdi ben PHP Rutin ile çözüldü, ama ben HER sonucu geçmesi ve çok uzun ihtiyacı her zaman yeni bir sorgu, yapmak zorunda;

  $userid = 1; // actual user

  // List all chats and show userid as nickname
  $sql_com = "SELECT user.id, user.nickname, chats.text, chats.id ".
        " FROM chats, user".
        " WHERE ".
        " chats.fromuserid = user.id ".
        " AND chats.roomid = 3 ".
        " AND user.banned != 1 ".
        " ORDER BY chats.id DESC";  
  $result = mysql_query ($sql_com);       

  $count = 0;
  while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
   {
       $dontshow = false;

       // Filter : dont show users $userid dont like to see (table "hide")
       $sql_com2 = "SELECT id from hide WHERE ( (orguser = ".$userid.") AND (hideuser = ".$row[0].") ) ";

       if ($result2 = mysql_query ($sql_com2)) 
       {
          if (mysql_num_rows($result2) > 0) $dontshow = true;
       }      


       // Output     
       if ($dontshow == false)
       {
            $count++;
            echo "Nickname: ".$row[1]." Text: ".$row[2];
       }

       if ($count > 10) break;
}

Btw. Ben zaten bazı improvments yapılmış, bu yüzden asıl soru (kadar şimdi yardım için teşekkürler) tüm cevapları ile uymayabilir

Nihayet onun artık "benim gerçek kullanıcı için" filtre "tabloda gösteri insanları yok" gizlemek entegre üzereydim.

0 Cevap