MySql和MySqli左连接

时间:2013-05-09 20:30:11

标签: php mysql

在过去的几个小时里,我一直在努力解决从两个不同的表中提取类似数据的问题。我一直在玩Join语句,但一直无法完成我想要做的事情。

首先,我试图提取一个客户列表,并在html表中显示它们和该表中的信息(这是完整的)。其次,我想把他们的索引(称为MID)用于引用另一个表中包含更多MID数据的数据。每个客户端都有多个“项目”位于另一个表中,并且这些项目中的每一个都有一个名为“package”的值,该值可以是1,2或3.我希望能够做的就是拉来自一个表的所有客户数据,并且还提取他们拥有的每个包的总数。即在我的表中,我有一个空白的地方,分别为pack1,pack2,pack3,我希望它将包含具有相同MID的包中包含该数字的总行数。

Example [ name ] [totalprojects][ totalpackage1][totalpackage2][totalpackage3]
          Bob          25               4               12             9

这是我的代码

$query_load_accounts = "SELECT * FROM useraccounts ORDER BY MID";
$result_load_accounts = mysqli_query($dbc, $query_load_accounts);

echo '<center><table border="1">';
echo '<cellpadding="10">';
echo '<th>Company Name</th>';
echo '<th>Member Since</th>';
echo '<th>Package 1</th>';
echo '<th>Package 2</th>';
echo '<th>Package 3</th>';
while ($row = mysqli_fetch_assoc($result_load_accounts))
{

echo "<tr>
<td><center>{$row['company']}</td></center>
<td><center>membersince</center></td> 
<td><center>notused</center></td> 
<td><center>package1</center></td>
<td><center>package2</center></td>
<td><center>package3</center></td>";

}  
echo "</center></table>";
mysqli_close($dbc);
mysqli_free_result($result_load_accounts);

其他有用的信息 - 另一个表的名称是“项目”,所需的字段是MID(客户特定)和包(只是一个包号,即包1 14.99,包2是24.99转)我希望能够我想使用Join语句来计算每个用户的每个包的数量。我只是遇到了很多麻烦

*更新我测试了以下语句,它正确地提取数据,现在我只需要知道如何在PHP中对数据进行排序。 I.E计算每个用户的行数

  

$ query_load_accounts =“SELECT useraccounts。,projects。 FROM   useraccounts LEFT JOIN致敬on useraccounts.mid = projects.mid   订购UID“;


感谢此帖子中的零活动,我自己解决了这个问题。甩掉包袱。

'SELECT mid,
SUM(IF(package = "1", 1,0)) AS `1`,
SUM(IF(package = "2", 1,0)) AS `2`,
SUM(IF(package = "3", 1,0)) AS `3`,
COUNT(package) AS `total`
FROM projects
GROUP BY mid
ORDER BY mid DESC'

1 个答案:

答案 0 :(得分:0)

&#39; SELECT mid, SUM(IF(包=&#34; 1&#34;,1,0))AS 1, SUM(IF(包=&#34; 2&#34;,1,0))AS 2, SUM(IF(包=&#34; 3&#34;,1,0))AS 3, COUNT(包)AS total 来自项目 GROUP BY中期 在DESC中期订购&#39;