親テーブルと親テーブルとの構造が少し違う複数の子テーブルがあります。親テーブルとすべての子テーブルのすべてのデータをすべての追加列で取得するクエリをアセンブルできますか?Postgres:親テーブルとすべての子テーブルからデータを選択
答えて
適切なスキーマおよび使用を使用することは、構造についてはPostgreSQLを伝えるために継承します。
CREATE TABLE foo(x int);
CREATE TABLE bar(y int) INHERITS (foo); -- <===
INSERT INTO foo(x) VALUES(1); -- one record
INSERT INTO bar(x,y) VALUES(2,3); -- one record
SELECT * FROM foo; -- two results
SELECT * FROM ONLY foo; -- one result, see ONLY
http://www.postgresql.org/docs/current/interactive/ddl-inherit.html
何が頼まれたのではなく、OP(と私)には列でなく行が必要です。私。 'SELECT * FROM foo WHERE x = ?; 'のようなクエリは、その特定の行がテーブル' bar'に属する場合、 'x'と' y'カラムの結果を返します。 – raveren
簡単な答えは、あなたが簡単にそれを行うことができないです。ギザギザの行(Informixとは異なります)を使用することはできません。したがって、単純な選択アプローチは機能しません。
row_to_jsonと多数のユニオンステートメントを使用するクエリをプログラムで作成することは可能かもしれませんが、それは多くの作業、非常に複雑な作業、必要なものではないかもしれません。列が同じ名前であっても、異なる子テーブルの意味が異なる場合にも対処できません。
一般的に、私はあなたのアプローチをここで再考する必要があると思います。ギザギザの行に頼っているのであれば、アプリケーションとデータベースの間に非常に緩やかな契約がたくさんあるため、ユニークな問題の可能性を秘めています。
ここでの最善の方法は、追加の列を結合表に移動して、left join
を使用してそれらを取得することです。
ここで必要と思われるのは、左外部結合を使用することです。ここでも、ない理想的なソリューションとデータベースへの構造の潜在的変動が良いだろうが、それでも、ここにある:
CREATE TABLE foo(x int);
CREATE TABLE bar(y int) INHERITS (foo);
INSERT INTO foo(x) VALUES(1);
INSERT INTO bar(x,y) VALUES(2,3);
SELECT foo.*, bar.y
FROM foo LEFT OUTER JOIN bar ON (foo.x = bar.x);
エントリだけ親で撮影する必要がありますどの、Yの場合はnullを持っていますしかし、それはすべてのデータを引き出します。ここでの欠点は、子テーブルから余分な列に具体的に名前を付ける必要があることです。 (とにかくコードに入るクエリで*を使用することは避けてください)
本当に子テーブルの列に名前を付ける必要がない場合は、特定の列here。あなたはどのように一緒に2つを配置するかを把握することができます。
EDIT:yがnullに設定することができ、正当なバーのyヌルと非ligitimateのfooのyヌルが何であるかを区別することが重要である場合には
、あなたの代わりにこれを試すことができます。
SELECT 'foo' AS from_table, *, NULL::int AS y
FROM ONLY foo
UNION
SELECT 'bar' AS from_table, *
FROM bar;
を
次に、コードの最後にfromテーブルの列を使用してどこから来たものかを処理し、どのnull値が正当かどうかを判断できます。
- 1. 子テーブル内に何かがあると仮定して、親テーブルのすべてのレコードを選択します。
- 2. 別のテーブルから条件を選択してデータを選択
- 3. ポストグルの親テーブルから子テーブルにデータを挿入
- 4. Kumulosのテーブルからデータを選択
- 5. SQLのテーブルからデータを選択
- 6. SQLは、異なるテーブルから親と子を選択します。
- 7. 親子テーブルにレコードを挿入して選択します
- 8. 親テーブルのトリガもPostgresのすべての子テーブルをリッスンする方法はありますか?
- 9. 2テーブルからデータを選択
- 10. テーブルからデータを選択しない
- 11. 親テーブルの値に基づいて子テーブルから項目を選択する方法は?
- 12. Postgresテーブル選択クエリが遅すぎる
- 13. すべてのテーブルのインデックスを選択
- 14. SQL Serverのテーブルからすべてのデータを選択できません。
- 15. テーブルからすべての行を選択する方法は?
- 16. テーブル1からテーブル2とテーブル3の平均ANDの異なる値をすべて選択する
- 17. 1つのテーブルとして2つのテーブルから選択
- 18. Mysql-データベースからすべてのテーブルを選択
- 19. 複数のテーブルからデータを選択して印刷する
- 20. 別のテーブルからデータを選択して注文する
- 21. Oracle SQLクエリの親テーブルと子テーブルからXMLが必要
- 22. ハイブhadoop:テーブルからエラーを取得するテーブルからデータを選択
- 23. 親テーブルと子テーブルを同じテーブルにコピーしますか?
- 24. ジェネリック選択連結テーブルからすべての列
- 25. PHPを使用して2つのテーブルからデータを選択
- 26. テーブルからデータを選択して別のDBに挿入
- 27. Mysqlテーブルからすべてを選択し、別のテーブルからテーブルを選択する別名を使用する
- 28. テーブルから選択(キーワード)phpmyadmin
- 29. 継承テーブルから選択
- 30. を選択し、親と子
テーブル構造、サンプル行、および必要な結果を投稿します。 – bos
jQueryはどこに来ますか? – Henry