+------------------+ +------------------+
| object | | example |
+------------------+ +------------------+
| id | | id |
| table_name | | ... |
| ref_id | | |
+------------------+ +------------------+
object [ id = 5, table_name = example, ref_id = 2]
example [ id = 2 ]
여러 테이블에서 비롯된 개체 그룹을 나타낼 수있는 테이블이 있습니다. 이 개체는 모두 id
이며 object.ref_id
으로 참조됩니다.알 수없는 열의 SQL 파생 테이블 결과
object.table_name
이 참조하는 테이블의 원본 개체를 object.id
으로 선택하려고합니다. 이를 위해 다음 SQL 쿼리를 사용하려고합니다. 이 결과는 #1054 - Unknown column 'entity.id' in 'where clause'
입니다.
SELECT *
FROM (
SELECT table_name
FROM object
WHERE id = 5) AS entity
WHERE entity.id = (
SELECT ref_id
FROM object
WHERE id = 5)
내가 뭘 잘못하고 있니?
CASE 예
SELECT *
FROM example
WHERE id = (
SELECT ref_id
FROM object
WHERE id = 5)
이 값은 일반적 object.table_name
로부터 유도되기 때문에 FROM 절 상기 예에서와 같이 용이하지 않다 제 경우 들면 않는다. 시험을 위해서 에러의 Tombom 결과의 용액을 사용 TOMBOM의 접근
, WITH
UPDATE는 I는 CONCAT 함수의 변수로 대체 하였다.
SET @sql = CONCAT('SELECT * FROM ', 'example', ' WHERE id = ', '1');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
#1243 - Unknown prepared statement handler (stmt) given to EXECUTE
그래서 의견이 있으십니까? 당신이 찾고있는 것이 아닌가요? – fancyPants
몇 가지 문제가 있습니다. 질문에 업데이트를 올릴 것입니다. 왜냐하면이 코멘트 안에는 읽을 수 없기 때문입니다. – Aquillo
귀하의 솔루션이 MySQL 설명서에 따라 유효하다고 보일지라도. 나는 내 오류의 원인을 모르겠습니다. – Aquillo