2015-10-22 49 views
0

我似乎無法弄清楚如何從查詢中獲取結果並在另一個查詢中使用它們。爲了保持它的簡單我只想說我有一個表叫saved_players和設置像這樣..如何從第一個選擇查詢結果集中多次運行選擇查詢?

Username  playername 
user1   player1 
user1   player2 
user2   player1 
user1   player3 
user3   player1 

這裏是我使用的回聲只對已登錄用戶的所有信息的查詢。

$query = "SELECT * FROM saved_players WHERE username = '".$_SESSION['login']."'"; 

$result = $conn->query($query); 

if (mysqli_num_rows($result) > 0) { 
// output data of each row 

while($row = mysqli_fetch_assoc($result)) { 

    echo " 
    <table class='tablebox' width='300' border='0' cellspacing='0'> 
    <tr> 


    <td width='200' style='color: #4f4e4e; font-size: 19px;'>". $row["[playername"]."</td> 

    </tr> 

    </table>"; 


    } 
} 

?> 

如果用戶「用戶1」中記錄此過程中會顯示

player1 
player2 
player3 

如何運行與這些名字的一個新的查詢?所有這一切的最終目標是把每個球員的名字從結果(在這種情況下PLAYER1,玩家2,玩家3)和運行與此類似

$query= "SELECT COUNT(playername) AS Totalnumber FROM saved_players WHERE playername = '' "; 

查詢我想指望有多少次這些玩家中的每一個都已被所有用戶添加到表格saved_players,並將該數字除以我擁有的成員數量。但我只需要登錄用戶已添加到saved_players的玩家完成此操作。當然,希望這可以幫助任何意義將不勝感激!

+0

您可以使用加入你的第一個查詢來計算所有玩家的名字 –

+0

@MahaDev你能告訴我一個關於如何使用join來計算我從第一個查詢中得到的特定玩家數量的例子嗎?閱讀關於加入的內容是關於2個不同的表格。我需要兩張桌子來實現我想要做的事情嗎? – user3765759

回答

0

使用這個查詢: -

$query = "SELECT *,(SELECT COUNT(playername) FROM saved_players as tab1 
WHERE tab1.playername = tab1.playername) 
AS Totalnumber FROM saved_players as tab2 
WHERE username = '".$_SESSION['login']."'" 

MySQL查詢這樣的: -

SELECT *,(SELECT COUNT(playername) FROM saved_players as tab1 
    WHERE tab1.playername = tab1.playername) 
    AS Totalnumber FROM saved_players as tab2 
    WHERE username = 'user1' 
+0

這不是你如何使用'HAVING'。你使用'HAVING'和一個聚合函數。 – Daan

+0

這讓我更加接近。但它似乎只計算在save_players表中有多少行。我需要首先找到登錄用戶添加到saved_players的玩家名稱。然後,計算所有用戶將這些名稱中的每一個添加到saved_players的次數。然後把這個數字除以總人數。 – user3765759

+0

使用** $ _ SESSION ['login'] **查找登錄用戶@ user3765759 –

0

試試這個代碼邏輯:

  <?php 
      $query = "SELECT * FROM saved_players WHERE username = '".$_SESSION['login']."'"; 

      $result = $conn->query($query); 

      if (mysqli_num_rows($result) > 0) { 
      // output data of each row 

      while($row = mysqli_fetch_assoc($result)) { 

       echo " 
       <table class='tablebox' width='300' border='0' cellspacing='0'> 
       <tr> 


       <td width='200' style='color: #4f4e4e; font-size: 19px;'>". $row["[playername"]."</td>"; 
      /* 
      Your logic can be placed here... 

$query= "SELECT COUNT(playername) AS Totalnumber FROM saved_players WHERE playername = '' GROUP BY playername HAVING Totalnumber > 0"; 

    The above is only an example... 
    but if you still wish to get 0 number of players then disregard the HAVING Part 
    -------------------------------------------------------------------- 

     // In your inner SQL query you may use group by with HAVING 
      get the value you expect in this query 

      */ 



       echo"</tr> 

       </table>"; 


       } 
      } 

      ?> 

希望這有助於

+0

感謝您的答覆。我從來沒有和HAVING一起使用過,所以我甚至不知道從哪裏開始。你能告訴我一個簡單的例子嗎? – user3765759

相關問題