我从数据库SQL从数据库中获取数据
问题描述:
我得到的数据,并希望各行从其它表中获取数据我从数据库SQL从数据库中获取数据
$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']
应该从另一个表“我”
$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)'];
}
有没有解决方法?
答
select ur.use, sum(my.mon)
from ur
inner join my
on ur.use = my.use
where ur.user = 'Gue'
group by ur.use
答
你要做的是获得'从你的表中使用'的列表。对于每个“使用”,你都希望得到我的表中具有相同用途的'mon'字段的总和。
把你的第二个查询放在while循环里面会有效,但更好的办法是利用你使用的sql数据库为你做过滤。
你在找什么是一个连接或一个声明(工作,并在大部分,功能上等价)。
由乔·斯特凡内利给出的答案给出了一个可能的查询溶液(加入和分组),另一个是这样的:
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语句中的子查询过滤掉你需要的。
答
$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'];
}
你能解释一下吗? – cute 2011-02-07 20:39:08
+1,这一个查询**方式比OP的设计更有效率**!为什么要获得SUM所需的所有行,然后一次只获取一个SUM,而一次只能获得所有SUM。 – 2011-02-07 20:40:44