2009-10-28 58 views
0

我的第一篇文章在这里,希望有人可以提供帮助。我正在查询mySQL DB中的一张表,显然得到了结果。但是,该表用于存储一个用户出于用户联系目的的多个条目。PHP Array Duplicates

我想要做的是单独显示每个用户,并统计每个用户拥有的联系人数量。我看了一篇文章“如何检测PHP数组中的重复帖子,这有点帮助,但我仍然卡住了。”

请参阅下面的查询我的代码,我遗漏了数组重复部分为它当时是一个相当混乱。

<?php 
    $result = mysql_query("SELECT * FROM vines"); 
    while($row = mysql_fetch_array($result)) { 
     $results=$row['vinename']; 
     echo $results; 
     echo "<br />"; 
    } 
?> 

这个结果返回下面的,很明显这些都是从vinename coloumn记录。

Marks Vine<br /> 
Marks Vine<br /> 
Marks Vine<br /> 
Tasch Vine<br /> 
Tasch Vine<br /> 

问候 马克洛克斯顿

+0

请修复您的代码格式。您可以使用编辑框下方的预览框查看它是否合理。 – 2009-10-28 18:24:47

+1

你的预期产出是什么?即使它很混乱,我可以看到数组的重复部分? – cp3 2009-10-28 18:25:41

+0

为此,您需要一个用户列表以及用户(“vinename”)列出的次数?例如:“Marks Vine,3; Tasch Vine,2”?是对的吗? – artlung 2009-10-28 18:26:00

回答

0

我会运行两种类型的查询... 1)从葡萄树中选择每个UNIQUE用户。 2)对于该集合中的每个用户,在表“vines”中针对该用户的id运行第二个COUNT查询。

我希望有帮助。

+0

正如其他答案指出的,这可以在使用GROUP BY子句的单个查询中完成。 – artlung 2009-10-28 18:42:35

+0

太棒了,谢谢。它肯定是 – Mark 2009-10-28 19:29:07

+0

你应该尝试使用GROUP BY子句。这是一个更好的解决方案。 – EToreo 2009-10-28 19:35:58

1

嗨,我在这里的第一篇文章,希望有人可以帮助。我正在查询mySQL DB中的一张表,显然得到了结果。但是,该表用于存储一个用户出于用户联系目的的多个条目。

你可以在查询本身比在PHP代码中更容易做到这一点。

SELECT name, COUNT(id) AS count FROM vines GROUP BY name 
0

您可以创建一个单独的数组来存储您已经在那里输出的记录。

<?php 
$result = mysql_query("SELECT * FROM vines"); 

$duplicates = array(); ## store duplcated names here 
while($row = mysql_fetch_array($result)) { 
    $results = $row['vinename']; 

    if (!array_key_exists($results, $duplicates)) { 
     echo $results; 
     echo "<br />"; 
     $duplicates[$results] = 1; ## mark that we've already output this records 
    } 
} 

?> 
1

只要改变SQL查询来

SELECT vinename, COUNT(vinename) as counter FROM vines GROUP BY vinename 

,然后做

echo $row['vinename']." #".$row['counter']."<br />"; 
+0

大家好,首先感谢大家这样的真棒输入。我认真地没有期待这么快速的回应。我非常感谢。上述工作就像发动机中的油一样。 – Mark 2009-10-28 19:25:22

+1

然后也投票并接受最佳答案 – jitter 2009-10-28 19:49:01

-1

改变您的查询:

SELECT distinct * FROM vines 
+0

不提供计数,并且如果该行中的其他数据不相同也不起作用。 – ceejayoz 2009-10-28 18:39:59

+0

谢谢,因为这一直是我今天的问题,我一直在经历每个人的回答,而且他们都很棒。 – Mark 2009-10-28 20:05:29

0

您可以尝试更改查询到使用SQL的计数和组。

Somoe东西一样

$result = mysql_query("SELECT count(*) as total,name FROM vines GROUP by name"); 
0

首先感谢大家对这样真棒输入。我认真地没有期待这么快速的回应。我很感激。

我使用了Jitter的建议。今天我已经经历了上述代码的很多变体,但只需要那些缺失的部分。

谢谢大家。下面是最后的代码对于将来有同样问题的其他人的样子。

<?php 

$result = mysql_query("SELECT vinename, COUNT(vinename) as counter FROM vines GROUP BY vinename ORDER BY counter DESC LIMIT 0, 3"); 
while($vinerow = mysql_fetch_array($result)) 

echo $vinerow['vinename']." has ".$vinerow['counter']." tomatos."."<br />"; 

?>