0

好吧,我正在尝试使用 comun 列在两个表中重复字符串并使用 While 获取所有结果的所有时间,如下所示:

    $result = mysql_query("SELECT * FROM hits") or die(mysql_error());

while($row = mysql_fetch_assoc( $result )) 
{
    $result=mysql_query("SELECT COUNT(app) FROM info WHERE app='$row[page]'");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) 

{

$toip = $row[0] ;  
}

echo '<td bgcolor="#75D169">'; 
    echo "$toip";
    echo '</td>';

    }

但它并没有很好地显示它,你可以在这里看到它:http: //ikillcraft.a0001.net/counter/view.php ?pass=test

输出将是:

Instalaciones de                    4       0 
Instalaciones de IkillLauncher      3       3
Instalaciones de gogogoa            3       0 
Instalaciones de MasterShell        0       0

但我不知道该怎么做。:(

4

2 回答 2

2

使用一条 SQL,这样的事情就可以做到:-

$result = mysql_query("SELECT a.page, COUNT(b.app) AS AppCount
                        FROM hits a
                        LEFT OUTER JOIN info b
                        ON a.page = b.app
                        GROUP BY a.page";

while($row = mysql_fetch_assoc( $result )) 
{
    echo '<td bgcolor="#75D169">'; 
    echo $row['AppCount'];
    echo '</td>';

}

注意我不知道你的列名,你应该在 GROUP BY 子句中拥有所有非聚合列名(即,在这种情况下,除了 COUNT 之外的任何内容)

于 2013-07-01T09:57:48.957 回答
1

我不知道你的表结构,所以我在这里做猜测,但这应该可行:

SELECT hits.page, appgrouped.apphit
FROM (hits)
LEFT JOIN (SELECT COUNT(app) as apphit, app
           FROM info 
           GROUP BY app) AS appgrouped ON appgrouped.app = hits.page

这会很慢 - 取决于有多大:

SELECT COUNT(app) as apphit, app
FROM info 
GROUP BY app

也就是说,如果它很大,那么上面的连接会很慢,在这种情况下,PHP 代码会是一个更好的解决方案(是的,它会更快)。

于 2013-07-01T09:59:16.530 回答