programing

로컬 테이블에서 참조 테이블로의 SQL 사용 값이 다른 DB에 있음

goodsources 2023. 10. 18. 22:02
반응형

로컬 테이블에서 참조 테이블로의 SQL 사용 값이 다른 DB에 있음

이것은 불가능할 수 있습니다 ;^)

별도의 클라이언트 dbs에서 청구 및 성능 데이터를 취합하려고 합니다."core" db에는 다음과 같은 테이블이 있습니다.

client_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
client_db_name VARCHAR(100), 
...

각 client_db에는 테이블이 있으며,orders, 기둥이 있는order_date그리고.order_total.

개념적으로, 저는 그 시스템을 사용할 수 있으면 좋겠습니다.client_db_name쿼리에서:

SELECT  SUM(order_total) AS sales
FROM    {client_db_name}.orders AS o
WHERE   o.order_date LIKE '2021%'

질문:

  1. 이게 가능하긴 합니까?
  2. 그렇다면 이 쿼리에 어떻게 참여해야 합니까?뭐가 있을까요.ON그렇습니까?

감사합니다!

보간 금지.

저장 프로시저는 다음을 통해 보간을 수행할 수 있습니다.CONCAT,PREPARE그리고.EXECUTE.

모든 손님들이 한 테이블에 모이는 것이 더 좋지 않을까요?그렇게 하면 모든 것이 쉬워질 겁니다.

다른 쿼리의 결과인 동적 쿼리를 만들 수 있습니다.

SELECT GROUP_CONCAT(query_piece SEPARATOR ' UNION ALL ')
FROM (SELECT CONCAT("SELECT '", client_db_name, "' AS client, SUM(order_total) AS sales FROM ", client_db_name, '.orders o WHERE YEAR(o.order_date) = 2021') AS query_piece
        FROM core.clients) AS sq

내 쿼리는 다음과 같은 동적 쿼리를 반환합니다(core.clients 테이블에 두 개의 클라이언트가 있습니다: a 및 b).

SELECT 'a' AS client, SUM(order_total) AS sales FROM a.orders o WHERE YEAR(o.order_date) = 2021 

UNION ALL 

SELECT 'b' AS client, SUM(order_total) AS sales FROM b.orders o WHERE YEAR(o.order_date) = 2021

동적 쿼리는 다음과 같은 것을 반환합니다.

고객 판매의
a 50.00
b 100.00

언급URL : https://stackoverflow.com/questions/68974060/sql-use-value-from-local-table-to-reference-table-in-different-db

반응형