WHERE 절 뒤에 조인을 사용할 수 없습니다. 대신 다음을 시도해보십시오.
SELECT comment.text, (COUNT(parent.id)-1) AS depth
FROM comments AS comment
JOIN comments AS parent
ON comment.lft BETWEEN parent.lft AND parent.rght
LEFT JOIN users as user
ON comment.user_id = user.id
GROUP BY comment.id ORDER BY comment.lft
또한 댓글을 게시 한 사용자의 사용자 이름을 선택하기 위해 user 테이블에 가입했을 가능성이 있습니까? 그런 다음 해당 열을 선택해야합니다. 당신의 선택 성명에서 별도의 컬럼으로 user.username 추가하고이 같은 결과를 얻을 것이다 :이 테스트에 사용
'ELECTRONICS', 0, 'Foo'
'TELEVISIONS', 1, 'Foo'
'TUBE', 2, 'Foo'
'LCD', 2, 'Bar'
'PLASMA', 2, 'Foo'
'PORTABLE ELECTRONICS', 1, 'Bar'
'MP3 PLAYERS', 2, 'Foo'
'FLASH', 3, 'Foo'
'CD PLAYERS', 2, 'Foo'
'2 WAY RADIOS', 2, 'Foo'
테스트 데이터 (here에서 수정) :
CREATE TABLE comments (id INT NOT NULL, user_id INT NOT NULL, text NVARCHAR(100) NOT NULL, lft INT NOT NULL, rght INT NOT NULL);
INSERT INTO comments (id, user_id, text, lft, rght) VALUES
(1, 1, 'ELECTRONICS', 1, 20),
(2, 1, 'TELEVISIONS', 2, 9),
(3, 1, 'TUBE', 3, 4),
(4, 2, 'LCD', 5, 6),
(5, 1, 'PLASMA', 7, 8),
(6, 2, 'PORTABLE ELECTRONICS', 10, 19),
(7, 1, 'MP3 PLAYERS', 11, 14),
(8, 1, 'FLASH', 12, 13),
(9, 1, 'CD PLAYERS', 15, 16),
(10, 1, '2 WAY RADIOS', 17, 18);
CREATE TABLE Users (id INT NOT NULL, username NVARCHAR(100) NOT NULL);
INSERT INTO Users (id, username) VALUES
(1, 'Foo'),
(2, 'Bar');
을