我从db sql获取数据

时间:2011-02-07 20:34:44

标签: php 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']都应该从另一个表'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)'];
}

有没有解决方案?

3 个答案:

答案 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语句中的子查询过滤掉你需要的那些。