私は、各 SQL クエリがうまく機能するケースの 1 つを持っていますが、それらを一緒に貼り付けるとうまくいきません。
私は2つのテーブルを持っています。1 つは、NULL 値を許可する動的です。もう 1 つは、ユーザーに質問を提供することで、null 値を埋めるのに役立ちます。動的テーブルから列名を取得し、それらを他の質問テーブルのフィールドと一致させることができるかどうかを確認します。現在、このPHPは機能していますが、すべてをPostgreSQLデータベースに入れようとしています。
これにより、動的テーブルからすべての列名が取得され、文字列のコンマ区切りリストが返されます。
select array_to_string(array_agg(quote_literal(column_name::text)),',') from
information_schema.columns where table_name='dynamic_table';
それはうまく機能し、「notificationemail」、「birthdate」、「lastnotificationcheck」、「createmethod」のようなものを返します
このリストを次のクエリに直接貼り付けると、機能して行が返されます。
select * FROM questions_table WHERE questioncolumn IN
('notificationemail','birthdate','lastnotificationcheck','createmethod');
それらを一緒に貼り付けると、実行されますが行は返されません。
select * FROM questions_table WHERE questioncolumn IN
(select array_to_string(array_agg(quote_literal(column_name::text)),',') from
information_schema.columns where table_name='dynamic_table');
静的テキスト フィールドが、IN ステートメント内に埋め込まれた SELECT とどのように異なるかを判断しようとしています。それが機能することは理にかなっているように見えますが、明らかに、動的リストと静的テキストとは何かが異なります。
編集:ありがとう!私は物事を考えすぎていたと思います。文字列リストにせず、オブジェクトのままにすることで、すぐに機能しました。