0

メイン クエリから users_groups に参加しようとしていますが、エイリアス テーブルに参加できないようです。私を助けてください。エラーが発生します:「on句」の不明な列「node.id」

SELECT node.id, node.first_name, node.last_name, (COUNT( parent.id ) - ( sub_tree.depth +1 ) ) AS depth
FROM users AS node, users AS parent, users AS sub_parent, (
    SELECT node.id, node.first_name, node.last_name, (COUNT( parent.id ) -1) AS depth
    FROM users AS node, users AS parent
    WHERE node.lft BETWEEN parent.lft AND parent.rgt
        AND node.id =1
    GROUP BY node.id
    ORDER BY node.lft
) AS sub_tree
JOIN users_groups ON users_groups.user_id = node.id
WHERE node.lft BETWEEN parent.lft AND parent.rgt
    AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
    AND sub_parent.id = sub_tree.id
GROUP BY node.id
ORDER BY node.lft
LIMIT 0 , 30
4

2 に答える 2

3

あなたのフォーマットSQLは常に役に立ちます

SELECT 
  node.id, 
  node.first_name, 
  node.last_name, 
  ( COUNT( parent.id ) - ( sub_tree.depth +1 ) ) AS depth
FROM 
  users AS node, 
  users AS parent, 
  users AS sub_parent, 
  (
    SELECT
      node.id, 
      node.first_name, 
      node.last_name, 
      ( COUNT( parent.id ) -1 ) AS depth
    FROM 
      users AS node, 
      users AS parent
    WHERE 
      node.lft BETWEEN parent.lft AND parent.rgt
        AND node.id =1
    GROUP BY 
      node.id
    ORDER BY 
      node.lft
  ) AS sub_tree
  JOIN users_groups ON users_groups.user_id = node.id
                                              ^^ should be sub_tree.id
WHERE 
  node.lft BETWEEN parent.lft AND parent.rgt
    AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
    AND sub_parent.id = sub_tree.id
GROUP BY 
  node.id
ORDER BY 
  node.lft
LIMIT 0 , 30
于 2013-04-19T18:30:29.987 に答える
2

指定したエイリアスを使用する必要があります..

JOIN users_groups ON users_groups.user_id = sub_tree.id

于 2013-04-19T18:22:30.520 に答える