私はそれが参照しているテーブルはレコードの1つに設定されている別のテーブルを参照することができ、テーブルを作成しようとしています:MariaDB、フィールド名をテーブル名として使用する方法は?
ルールテーブルには「tblRules」:
biRuleID, BIGINT, Unsigned, Primary Key
biTableID, BIGINT, Unsigned, Link to record in 'other' table
vcDescription, VARCHAR[64], Description of rule
vcTableName, VARCHAR[64], The name of the table containing the rule details.
テストテーブル'tblTest':
1, 1, Testing rule, tblTest
01:テストするに
biTestID, BIGINT, Unsigned, Primary Key
vcTest, VARCHAR[64], A test string
、tblRulesは、単一のレコードが含まれています
そしてtblTestは含まれています。私はそれがの名前としてt1.vcTableNameを取っているようだクエリを実行しようとすると、しかし
SELECT
*
FROM
tblRules t1
LEFT JOIN
t1.vcTableName t2
ON
t1.biTableID=t2.biTestID
WHERE
t1.biRuleID=1;
:
1, Hello World
は、今、私がデータをプルしたいですテーブルにはvcTableNameの内容が含まれていませんが、これを整理する方法はありますか?
あまり効果的ではないとして、あなたのDB設計となめらかを行う必要があると思いますけれども、私は、一般的にこの事MariaDBユーザないんだけど、それを達成するために、動的SQLを使用することができますクエリ自体の列からの値)はSQLでは不可能です(実際にはSQL標準に反しているかもしれません)。 SQLの上に言語を置くか、EXECUTE IMMEDIATEを使用してSQL文を動的に生成して実行することで、何らかの形でメタを取得する必要があります。 – Turophile
この種の問題は、悪い設計の兆候です – Strawberry
完全な柔軟性とスケーラビリティを目指しています – SPlatten