我从数据库获取数据并希望每一行从其他表中获取数据
$query = "SELECT use FROM ur WHERE user='Gue'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['use'];
echo '<br>';
}
现在我希望每个$row['use']
都应该从另一个表'my'
$query = "SELECT SUM(mon) FROM my WHERE use='$use'"; //$use = row['use']
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['SUM(mon)'];
}
有没有解决方案?
答案 0 :(得分:2)
select ur.use, sum(my.mon)
from ur
inner join my
on ur.use = my.use
where ur.user = 'Gue'
group by ur.use
答案 1 :(得分:1)
$query = "SELECT ur.use, SUM(my.mon) sumMon
FROM ur
LEFT JOIN my on my.use=ur.use
WHERE ur.user='Gue'";
$result = mysql_query($query) or die(mysql_error());
$use = -1;
while($row = mysql_fetch_array($result)){
// process the `use` rows. SUM only returns one row, if you were going for
// raw records, uncomment the two parts commented out below
// if ($row['use'] != $use) {
echo $row['use'];
echo '<br>';
// $use = $row['use'];
}
// process the `sum` rows, only if there were any records
echo $row['sumMon'];
}
答案 2 :(得分:0)
您要做的是从您的表中获取“使用”列表。对于每个“使用”,您希望得到我的表中具有相同用途的“mon”字段的总和。
将第二个查询放在while循环中会起作用,但更好的想法是利用您用来为您进行过滤的sql数据库的强大功能。
您正在寻找的是一个连接或一个声明(两者都有效,并且在大多数情况下,在功能上是等效的)。
Joe Stefanelli给出的答案提供了一种可能的查询解决方案(加入和分组),另一种是:
select my.use, sum(my.mon) as mon_sum
from my
where my.use in (select use from ur where user = 'Gue')
group by my.use
这也可行。这个想法是你按使用分组并得到总和,然后使用in语句中的子查询过滤掉你需要的那些。