반응형
사용자 정의 변수를 사용하여 두 번째 데이터베이스에 동적으로 이름을 지정하여 해당 두 번째 데이터베이스와 함께 조인 테이블에 이름을 지정합니다.
할 필요가 있다JOIN
테스트 목적으로만 이미 정적으로 실행한 두 개의 다른 데이터베이스입니다.
- 첫 번째 데이터베이스는 연결 자체에 이미 정의되어 있습니다.
- 두 번째 데이터베이스는 사용자 정의 변수에 먼저 정의해야 하는 첫 번째 데이터베이스 내의 정보에서 동적으로 파생되어야 합니다.단순하게 하기 위해 두 번째 데이터베이스 이름은 다음과 같습니다.
example2
. - 두 번째 데이터베이스 이름을 정적으로 정의하면 기능하고 모든 데이터베이스 이름이
JOIN
ed 데이터는 정상적으로 풀립니다만, 만약 라이브(또는 「실가동」) 서버상에서 이것을 실시하면, 그 2개의 쿼리 사이에 PHP 코드가 있는 같은 접속으로 2개의 다른 쿼리를 실행할 필요가 있습니다. - 두 번째 데이터베이스 이름을 정의하려면 두 번째 쿼리를 실행해야 합니다.중요한 것은 단일 쿼리로 SQL 서버에 여러 번 연결하지 않는 것입니다(사용자 정의 변수를 쿼리로 설정하지 않는 경우).
다음은 나에게 도움이 되는 것을 보여주는 정적 데모입니다.
SELECT * FROM example1 AS e1
INNER JOIN example2.accounts AS e2a ON (e2a.id = e1.accounts_id);
그러나 다음 기능은 작동하지 않습니다.
SET @db = 'example2';
SELECT * FROM example1 AS e1
INNER JOIN @db.accounts AS e2a ON (e2a.id = e1.accounts_id);
사용자 정의 변수를 설정하여 사용하여 두 번째 데이터베이스의 이름을 동적으로 정의하고 이를 사용하여 동적으로JOIN
두 데이터베이스 사이에 있는 테이블이 있나요?
- 모든 데이터가 올바르게 저장/포맷되어 있다.
- 사용자 정의 변수는 이미 동작하고 있습니다.데이터베이스 간 JOIN에서 구현하려면 도움이 필요합니다.
- 이는 PHP에 변수 변수가 있다는 사실과 관련이 있습니다.
MySQL에서는 다음과 같은 준비 스테이트먼트를 사용할 수 있습니다.
SET @db = 'example2';
SET @sql = CONCAT('SELECT * FROM example1 AS e1
INNER JOIN ', @db ,
'.accounts AS e2a ON e2a.id = e1.accounts_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
첫 번째 응답에서는 클라이언트와 서버 간의 불필요한 라운드 트립을 피하기 위해 다음 2개의 라이너를 사용합니다.
SET @db = 'example2';
EXECUTE IMMEDIATE CONCAT('SELECT * FROM example1 AS e1 INNER JOIN ', @db , '.accounts AS e2a ON e2a.id = e1.accounts_id');
언급URL : https://stackoverflow.com/questions/63468237/use-a-user-defined-variable-to-dynamically-name-second-database-to-join-tables-w
반응형
'source' 카테고리의 다른 글
Mac용 ext-zip 설치 (0) | 2022.11.24 |
---|---|
이 쿼리 mysql 및 레일 5를 개선하는 방법 (0) | 2022.11.24 |
JavaScript에서 오브젝트에 구성원을 조건부로 추가하는 방법은 무엇입니까? (0) | 2022.11.24 |
Larabel에는 Mcrypt PHP 확장자가 필요합니다. (0) | 2022.11.24 |
java의 console.log()는 무엇입니까? (0) | 2022.11.24 |