2012-12-13 2 views
2

Я использую SELECT COUNT, чтобы проверить, есть ли в моей таблице mysql какие-либо дубликаты, и когда это произойдет, я хочу, чтобы он удалял дубликат.Удалить дублирующийся результат MySQL запроса?

Вот скриншот того, как результат запроса выглядит следующим образом: http://s.prelicio.us/lDyRV.png

В настоящее время существует 2 «Aanpassingen сайта пакета Chat-сад» в моей таблице. Это правильно, поэтому я подсчитал, где стоит «Aantal», вот где он скажет мне, сколько строк имеет «Aanpassingen voor website Chat-Garden».

Но теперь я хочу, чтобы он удалил повторяющуюся строку на моем снимке экрана, так как «2» уже был показан в «Aantal». Тогда мне не нужна дополнительная строка на снимке экрана. (Простите за мой плохой английский)

Это де текущий код:

<?php 

$products = mysql_query('SELECT * FROM `preo_invoices-products`'); 
if(!$products || mysql_num_rows($products) == '0') echo '<li>Er zijn geen producten voor dit factuur.</li>'; 

else $i == '0'; while($product = mysql_fetch_object($products)) { 

$color = ($i % 2 == 0) ? ' class="grey"' : ''; $i++; 


$result = mysql_query('SELECT *, COUNT(`id`) FROM `preo_invoices-products` WHERE `invoiceid` = "'.$paid->id.'" GROUP BY `description`'); 
while($row = mysql_fetch_array($result)) { 

?> 

<li<?php echo $color; ?>> 

<span class="inv9"><?php echo $row['COUNT(`id`)']; ?></span> // This one is the 'Aantal' where it shows 2 
<span class="inv3"> 

<?php 
$services = mysql_query('SELECT * FROM `preo_services` WHERE `id` = "'.$product->serviceid.'" LIMIT 1'); 
while($service = mysql_fetch_object($services)) echo strtoupper($service->name); 
?> 

</span> 
<span class="inv14"><?php echo $product->description; ?></span> 
<span class="inv9"><?php echo $product->tax; ?>%</span> 
<span class="inv12">&euro;<?php echo $product->sum; ?>,-</span> 
<span class="inv15">&euro;<?php echo $product->sum*$row['COUNT(`id`)']; } ?>,-</span> 

</li> 

<?php } ?> 

Теперь он на самом деле должен удалить повторяющиеся строки, так как «Aantal» показывает мне, у меня есть дубликат один. Но когда у меня есть три одинаковые строки, он покажет «3» в Aantal и все равно должен показать 1 строку на моем снимке экрана.

Любые идеи?

ответ

6

вы можете добавить DISTINCT в запросе, например,

SELECT DISTINCT * FROM tableName 
+0

И затем использовать [PDOStatement :: ROWCOUNT] (http://php.net/manual/en/pdostatement.rowcount.php) или [mysql_num_rows()] (http://php.net/manual/en/function.mysql-num-rows.php) для отображения номера. – stUrb

+0

У вас есть пример? Потому что, как я только что это сделал, похоже, не работало. Я изменил запрос SELECT DISTINCT * FROM 'preo_invoices- ' продуктов и добавил mysql_num_rows эхо, где «Aantal» есть, но теперь он показывает мне это: http://s.prelicio.us /G21ff.png $ результат = mysql_query ('SELECT DISTINCT * FROM 'preo_invoices-' 'продуктов Где invoiceid' = "' $ paid-> ид. '".'); в то время как ($ строка = mysql_fetch_array ($ результат)) { \t \t \t \t \t \t \t \t \t \t \t > \t \t \t \t \t \t \t <литий > \t \t \t \t \t \t \t \t \t \t <пролет класс = "inv9"> // Aantal –

+0

гораздо лучше, если вы предоставите образцы данных в своем примере, чтобы я мог показать вам, как ': D' –

Смежные вопросы