[drupal-devel] [bug] Nodes are repeated when asking for a list of taxonomy/term/x+y nodes

matteo drupal-devel at drupal.org
Fri May 20 13:00:16 UTC 2005

Issue status update for http://drupal.org/node/22469

 Project:      Drupal
 Version:      4.6.0
 Component:    taxonomy.module
 Category:     bug reports
 Priority:     normal
-Assigned to:  Anonymous
+Assigned to:  matteo
 Reported by:  matteo
 Updated by:   matteo
-Status:       active
+Status:       patch
 Attachment:   http://drupal.org/files/issues/taxonomy_distinct.patch (1.06 KB)

Here is the patch for Drupal 4.6 to solve this problem.


Previous comments:

May 9, 2005 - 22:39 : matteo

When asking for a list of nodes linked to more than one term by using
the syntax 'taxonomy/term/x+y', the same nodes are shown twice instead
of only one time, when nodes are linked to both x and y term.

Hoping I've been able to explain what happens.....

PS: Maybe is it so by design.... ??


May 9, 2005 - 22:45 : matteo

It looks like a distinct(n.nid) clause should be added to lines 839-840,
which should sound like this:

      $sql = 'SELECT distinct(n.nid), n.sticky, n.title, n.created FROM
{node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid IN ('.
$str_tids .') AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC';
      $sql_count = 'SELECT COUNT(distinct(n.nid)) FROM {node} n INNER
JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid IN ('. $str_tids .')
AND n.status = 1';

this prints out the correct number of nodes.



May 10, 2005 - 16:01 : JonBob

I think your analysis is right. The DISTINCT() was probably removed
because someone thought it was there for node permissions (the new
db_rewrite() mechanism handles this now), but it is also necessary in
the case of an OR query.


May 20, 2005 - 09:10 : Cvbge


I've used proposed change and it works as expected.


May 20, 2005 - 09:22 : matteo

Just to undesrtand what to do, should I create the patch, or is it
assigned to someone else ??

More information about the drupal-devel mailing list