--- taxonomy.module	2005-05-07 22:13:03.000000000 -0400
+++ taxonomy_order_sql.module	2005-05-08 03:13:25.000000000 -0400
@@ -542,13 +542,13 @@ function taxonomy_node_get_terms_by_voca
 }
 
 /**
- * Find all terms associated to the given node.
+ * Find all terms associated to the given node, ordered by vocabulary and term weight.
  */
 function taxonomy_node_get_terms($nid, $key = 'tid') {
   static $terms;
 
   if (!isset($terms[$nid])) {
-    $result = db_query('SELECT t.* FROM {term_data} t, {term_node} r WHERE r.tid = t.tid AND r.nid = %d ORDER BY weight, name', $nid);
+    $result = db_query('SELECT t.* FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.nid = %d ORDER BY t.weight, v.weight, t.name', $nid);
     $terms[$nid] = array();
     while ($term = db_fetch_object($result)) {
       $terms[$nid][$term->$key] = $term;
