1

列の subsring 値に基づいて、別のデータベースから結果を選択したいと考えています。これが私のテーブルの学生です:

Original_student        Other_student
1010173                   1240240
1010173                   1240249

番号の 3 桁目は、データベースを識別するために使用されます。例えば。クエリを

select original_student, Other_student, month
from student join database-(substring(other_student,3,1).payment 

私の質問は次のとおりです。部分文字列をデータベース名または列名に動的に連結するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

一意の ID ( id_student) で各生徒を識別するフィールドがあると仮定すると、安価な代替手段を次に示します。

CREATE OR REPLACE VIEW v_student_payment AS
SELECT 0 AS db, payment, id_student FROM database-0
UNION 
SELECT 1 AS db, payment, id_student FROM database-1
UNION 
SELECT 2 AS db, payment, id_student FROM database-2
UNION 
SELECT 3 AS db, payment, id_student FROM database-3
/* here you have to add all databases you're using. There's a little maintenance cost, for if one day there's a new database to be created this view would have to be modified */
;

SELECT 
    original_student, 
    Other_student, 
    month, 
    v.payment
FROM 
    student s
        JOIN v_student_payment v ON v.id_student = s.id_student AND v.db = SUBSTRING(other_student,3,1) 
于 2013-11-07T05:23:39.817 に答える
0

結合を確認するために Case ステートメントを使用してみましたか。このリンクを見てみてください

Join での Use Case ステートメント

于 2013-11-07T05:38:57.323 に答える