반응형
지불 인 또는 수취인을 기준으로 USERS 테이블의 NAME 및 PHOTO를 TRANSACTIONS 테이블에 조인하려고합니다. this
테이블을 찾을 수 없다는 메시지가 계속 표시됩니다. 내가 뭘 잘못하고 있는가?
SELECT `name`,`photo`,`amount`,`comment`,
(
CASE `payer_id`
WHEN 72823 THEN `payee_id`
ELSE `payer_id`
END
) AS `this`
FROM `transactions`
RIGHT JOIN `users` ON (`users`.`id`=`this`)
WHERE `payee_id`=72823 OR `payer_id`=72823
해결 방법
별칭은 식의 열 이름으로 사용되며 GROUP BY, ORDER BY 또는 HAVING 절에서 사용할 수 있습니다.
조인에서 별칭을 사용할 수 없습니다. 위에 나열된 장소에서만 사용할 수 있습니다. 그 이유는 별칭이 조인 결과의 필드에 있기 때문입니다. 정의에서 이러한 별명에 결합이 허용 된 경우 재귀 적 정의가 발생하거나 발생할 수 있습니다.
문제를 해결하려면 두 위치에서 CASE
절을 반복 할 수 있습니다.
SELECT `name`,`photo`,`amount`,`comment`,
(
CASE `payer_id`
WHEN 72823 THEN `payee_id`
ELSE `payer_id`
END
) AS `this`
FROM `transactions`
RIGHT JOIN `users` ON `users`.`id`= (
CASE `payer_id`
WHEN 72823 THEN `payee_id`
ELSE `payer_id`
END
)
WHERE `payee_id`=72823 OR `payer_id`=72823
그러나 나는 아마도이 쿼리를 두 개의 선택 및 UNION으로 다시 작성할 것입니다.
SELECT name, photo, amount, comment, payer_id AS this
FROM transactions
JOIN users ON users.id = payer_id
WHERE payee_id = 72823
UNION ALL
SELECT name, photo, amount, comment, payee_id AS this
FROM transactions
JOIN users ON users.id = payee_id
WHERE payer_id = 72823
결과:
'name3', 'photo3', 30, 'comment3', 3
'name1', 'photo1', 10, 'comment1', 1
'name2', 'photo2', 20, 'comment2', 2
테스트 데이터 :
CREATE TABLE users (id INT NOT NULL, name NVARCHAR(100) NOT NULL, photo NVARCHAR(100) NOT NULL);
INSERT INTO users (id, name, photo) VALUES
(1, 'name1', 'photo1'),
(2, 'name2', 'photo2'),
(3, 'name3', 'photo3'),
(4, 'name4', 'photo4');
CREATE TABLE transactions (amount INT NOT NULL, comment NVARCHAR(100) NOT NULL, payer_id INT NOT NULL, payee_id INT NOT NULL);
INSERT INTO transactions (amount, comment, payer_id, payee_id) VALUES
(10, 'comment1', 72823, 1),
(20, 'comment2', 72823, 2),
(30, 'comment3', 3, 72823),
(40, 'comment4', 4, 5);
참조 페이지 https://stackoverflow.com/questions/2761574
반응형
'MySql' 카테고리의 다른 글
MySQL 판매가없는 달을 포함하여 지난 12 개월의 MySQL 월간 판매 (0) | 2020.11.26 |
---|---|
MySQL mysql이 우분투에 설치되어 있는지 어떻게 확인할 수 있습니까? (0) | 2020.11.26 |
MySQL 이미 데이터가있는 MySQL 데이터베이스 필드에 데이터 추가 (0) | 2020.11.25 |
MySQL ID 목록을 사용하여 여러 행 업데이트 (0) | 2020.11.25 |
MySQL 데이터베이스 필드를 1 씩 증가 (0) | 2020.11.25 |
댓글