2017-07-12 3 views
0

MYSQLを使用すると、名前が変数として格納されているテーブルを選択するにはどうすればよいですか?たとえば、私は2つのテーブル(T1およびT2)を持っていると私はT3を導出したい:I(x)はT3クエリの結果に等しくなるように(名前を取得するために、変数を設定したいテーブル名が変数として格納されているテーブルを選択する

DECLARE i INT; DECLARE n INT; 
DECLARE o VARCHAR(50);  
DECLARE T3 VARCHAR(50); 

SET n=(SELECT COUNT(*) FROM `T1`); 
i=1 
WHILE i<n+1 DO 
SET o=(SELECT customer FROM `T1` WHERE IDligne=i); 
SET T3=(SELECT MiddleCat FROM `T2` WHERE customer=o); 
SET x = SELECT * FROM `T3`; 

SET i=i+1; 
END WHILE; 
END 

これはエラーを示しています。代わりにどのようなクエリを使用すべきですか?

答えて

0

単にあなたのケースでは、あなたは、ユーザー、次のいずれかのことができます。

1. Print T3 
2. Select T3 
1

あなたが準備されたステートメントを使用する必要があります。セッション変数を使用すると、クエリの結果を格納できます。以下の例では、カウントクエリの結果を変数@resultに代入します。

DECLARE @query VARCHAR(50); 
SET @result := 0; 
SET T3 = (SELECT MiddleCat FROM `T2` WHERE customer=o); 
SET @query = CONCAT('SELECT COUNT(*) INTO @result FROM ', T3); 
PREPARE stmt FROM @query; 
EXECUTE stmt; 

関連性の高い:Using select into local variable and prepared statement in mysql

+0

しかし、どのように私は私の手順で、さらにこのプリペアドステートメントの結果を使用することができます。たとえば、新しい変数として? – SamanthaAlexandria

+0

@SamanthaAlexandria 1つのオプションは、クエリの結果をユーザー変数q.vに選択することです。私の更新答え。 –

関連する問題