私は個人的な教育実験として、架空の動物避難所のデータベースを構築しています。私は一般的にSQLとデータベースにはかなり新しいです。多対多の関係でConcatRelated()を使用する方法
タスク:ペットシェルターデータベースでペットのすべての所有者を検索する。
私は3つのテーブル:ペット、オーナー、Pets2Ownersを持っています。所有者は1つまたは複数のペットを持つことができ、ペットは1つ、多くの、または所有者を持たないことができます。テーブルは次のようになります。
Pets
+--------+----------+
| ID | Name |
+--------+----------+
| 1 | Opal |
| 2 | Fuzzy |
| 3 | Angel |
| 4 | Peewee |
| 5 | Spike |
+--------+----------+
Owners
+----------+--------+
| ID | Name |
+----------+--------+
| 1 | Shy |
| 2 | Belle |
| 3 | Velvet |
| 4 | Brilla |
+----------+--------+
Pets2Owners
+----+--------+----------+
| ID | Pet_ID | Owner_ID |
+----+--------+----------+
| 1 | 1 | 2 |
| 2 | 2 | 1 |
| 3 | 3 | 1 |
| 4 | 5 | 3 |
| 5 | 5 | 4 |
+----+--------+----------+
だから、Pets2Ownersから、我々はペット#3(エンジェル)(さんはシャイ)所有者の#1によって所有されていることがわかり、ペット#5(スパイク)は、両方の所有者が所有しています#3 & 4(ベルベットとブラジル)、ペット#4(ピービー)は誰も所有していません。
I SQLでの経験の浅い、と私はこれが可能であるが、このように、ペットを複製せずに私のペットとオーナーのすべての情報を提供し、単一のクエリを作成する方法があるかわからない:
+--------+--------+
| Pets | Owners |
+--------+--------+
| Opal | Belle |
| Fuzzy | Shy |
| Angel | Shy |
| Peewee | (none) |
| Spike | Velvet |
| | Brilla |
+--------+--------+
本質的には、3つのテーブルすべての情報を1つにまとめる方法が必要です。私は結合を使用しようとしましたが、それらは重複したエントリ(Spikeの場合は2行、所有者Velvetの場合は1行、所有者Brillaの場合は2行)を私に残します。
Spike's Owners
+--------+
| Owners |
+--------+
| Velvet |
| Brilla |
+--------+
が、私は同じ目標を達成するためにこれを使用すると、すべての所有者を持つことができます:
代わりに、それはそうのように、特定のペットのすべての所有者を返すクエリを作成することが可能です特定のペットはあなたの良いグリップを取得した後
あなたは何データベースを使用していますか?適切なタグを付けてください。 –
ああ、申し訳ありません! MS Access(私はおそらくSO上で最も人気のあるものではないことを知っています) – Somatic
不均一な行数を返すクエリは実行できません(たとえば、Spikeに必要なことを示しています)。フロントエンドでレポートや表示を行います。 –