According to the Taxonomy page, the , argument between two taxonomy terms functions as AND while the + argument functions as OR.

However, the taxonomy_term view that comes packages while Views treats them both as OR. The query generated for 10+17 and 10,17 is:

SELECT node.nid AS nid,
   node.sticky AS node_sticky,
   node.created AS node_created
 FROM node node 
 WHERE (node.status <> 0 OR node.uid = ***CURRENT_USER*** or ***ADMINISTER_NODES*** = 1) AND (node.vid IN (
  SELECT tn.vid FROM term_node tn
  WHERE tn.tid  IN (10, 17)
  ))
   ORDER BY node_sticky DESC, node_created DESC

My initial suspicion is that replacing

WHERE ..... AND (node.vid IN (
  SELECT tn.vid FROM term_node tn
  WHERE tn.tid  IN (10, 17)
  )

with

WHERE ..... AND (node.vid IN (
  SELECT tn.vid FROM term_node tn
  WHERE tn.tid  = 10) AND  (node.vid IN (
  SELECT tn.vid FROM term_node tn
  WHERE tn.tid  = 17)
  )

would fix the problem. However, I don't know enough about the internal workings of Views to implement the switch between the two queries based on the arguments passed in by the URL.

I didn't attach an export of the view, since it's one that comes packaged by default. It's worth noting that when activated, this view overrides Drupal's default handling of the taxonomy/term/ pages, so you essentially lose the , functionality entirely.

Comments

merlinofchaos’s picture

Status: Active » Closed (won't fix)

Yes, if you want + and , to work, you need to change to the argument that doesn't support depth. It says that in the argument itself, if you had just looked. The combination of supporting depth and 'AND' makes for terrible, terrible queries, and I elected not to try and write it.