約100のテーブルを持つデータベースがあり、2つのテーブルから特定のデータを取得するために結合クエリを作成する必要があります。どちらかは知っていますが、もう一方は知りません。基本的に私は次のようなものが必要です:
select <tables> from <database> where exists table.column name;
これどうやってするの?
information_schema
の使用これは、標準に準拠したクロスRDBMSによる方法です。
SELECT table_catalog, table_schema, table_name, column_name
FROM INFORMATION_SCHEMA.columns
WHERE column_name = '<your column name>';
あなたはこれを文書化して見ることができます
IBM DB2の場合、以下を使用します。
select tabschema,tabname from syscat.columns where colname = 'COLUMN_NAME'
DB2では、列名は大文字になりますnlessは、二重引用符の中に大文字以外の何かで定義されています。次に、列名のexact大文字と小文字も指定する必要があります。
以下のクエリは、あなたが探しているものを与えるはずです:
use YourDatabase;
go
select
object_schema_name(t.object_id) + '.' + t.name as table_name,
c.name as column_name
from sys.tables t
inner join sys.columns c
on t.object_id = c.object_id
where c.name like '%ColumnSearchText%';
正確な名前の列を探している場合は、WHERE
句を次のように置き換えます。
where c.name = 'ColumnSearchText';
Oracle sql/plsql:
select table_name from all_tab_columns where column_name='yourcolumnname';
teradata 15の場合:
SELECT DATABASENAME||'.'||TABLENAME AS FULL_TABLENAME,
COUNT(1) AS NUMBER_OF_COLUMNS
FROM DBC.COLUMNSV
WHERE 1 = 1
AND COLUMNNAME LIKE '%<YOUR COLUMNNAME HERE>%'
GROUP BY 1
SELECT * FROM _v_sys_columns WHERE COLUMN_NAME='$COLUMN_NAME'
列名をこの変数に渡してください:$COLUMN_NAME