2015-10-22 50 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

相关问题