私はphpプロジェクトでpostgresqlデータベースを使用しており、クエリを作成しようとしています。これがシナリオです。
FOO と BAR という複数のテーブルがあるとします。
テーブル FOO は次のようになります。
| | foo_id | foo_name | foo_data | ---------------------------------- | | 1 | ジョン | 息子 | | | 2 | ジェーン | 娘 | | | 3 | サム | 息子 | | | 4 | サリー | 娘 |
テーブルBARはこんな感じ
| | bar_id | bar_foo_id | bar_fooParent_id | bar_content | ---------------------------------- | | 1 | 1 | 1 | ヤバダバドゥー|ヤバダバドゥー| | | 2 | 2 | 1 | スクービー・スクービー・ドゥー| | | 1 | 3 | 888 | 牛を飼ってはいけない | | | 2 | 4 | 999 | ああ!| |
テーブル スキーマを変更できません。すべてがそのままです。
しかし、私は PHP を介して値を渡すことができます。それを PARENT と呼びましょう。
そして - テーブル FOO の foo_id は、テーブル BAR の bar_foo_id にマップされます。
テーブル FOO と BAR の両方のデータを結合する SELECT クエリを作成したいと思います。何かのようなもの:
SELECT BAR.bar_content, (and other BAR.columns) , FOO.foo_name, FOO.foo_data
FROM FOO,BAR WHERE bar_fooParent_id=".$PARENT." AND " ...?
どこ ?少し紛らわしいです。
テーブル BAR から選択した行に基づいて、テーブル FOO から foo_name と foo_data の行を取得する必要があります。したがって、値 1 が $PARENT に渡された場合、bar_fooParent_id は 1 になり、テーブル BAR から最初の 2 行を取得し、それぞれの bar_foo_id (値 1 と 2) を使用してテーブルの行からデータを取得します。 1 と 2 の foo_id を持つ FOO (この場合は最初の 2 行)。
以下のようなステートメントを試してみました (簡単にするために、値はハードコードされています)
SELECT * from BAR,FOO where BAR.bar_fooParent_id=1 AND (BAR.foo_id=1 OR BAR.foo_id=2) AND (FOO.foo_id=1 OR FOO.foo_id=3)
また
select * from BAR where BAR.barr_fooParent_id=1 IN (SELECT foo_id,foo_name from kid WHERE foo_id=1 OR foo_id=3 )
あまり成功せずに。基本的に、データは理想的には次のように返されるはずです
foo_name | foo_data | bar_content | その他の BAR 列 ... | _________________________________________________________________ ジョン | 息子 | ヤバダバド | など | ジェーン | 娘 | スクービードゥービード| など |
(書式設定についてお詫びします。この 3 番目の結果の表で何が起こっているのかわかりません)
この SELECT クエリを postgreSQL 用に作成する際に誰かが手を貸してくれれば幸いです。
何か案は?ありがとう。
エドワード