電子書籍の厳選無料作品が豊富!

3つのテーブル間でリレーションを組んでいる場合のクエリについて教えてください。
言葉では説明し辛いので表記方法のルールを・・・

<ルール>
テーブル→A、B、C
レコード番号→1、2、3・・・
Ex.テーブルAのデータ番号1 → 「A1」と表記
  テーブルCのデータ番号3 → 「C3」と表記

<前提>
テーブルA、B、Cのそれぞれに「顧客ID」というフィールドがあり、これを根拠にリレーションをとっています。A、B、Cは「顧客ID」と言う点ではつながりがありますが、BとCとは「顧客ID」という以外につながりがりがありません。

<出力したいレポートの形>
大見出しをA1、A2、A3とした上で、A1に関係するBテーブルのデータ、Cテーブルのデータを集めたいのです。
この場合、BとCのデータは単純に小分類としてそれぞれが素直にAに関連するものだけがおかれるだけにしたいです(BとCを絡めたたくない)。

具体的には、
[A1]
--[B1 B3 B5]
--[C2 C5 C7]

[A2]
--[B2 B4]
--[C1 C8]

[A3]
--[B7 B8]
--[C3 C4 C6]

というふうにしたいのですが・・・
実際には、
[A1]
B1 C2
B1 C5
B1 C7
B3 C2
B3 C5
B3 C7
 ・
 ・
 ・
という感じでBとCも絡んだ形になってしまいます。
そのため、クエリのデータを見てもものすごい量になっています。

リレーションの組み方で解決できるものなのでしょうか?それとも、クエリをAとB、AとCのものにそれぞれ分けて、レポートも別々に出力するしかないのでしょうか?出来れば1つの表にしたいのですが・・・

A 回答 (2件)

こんにちわ。


クエリを
(1)AとB
(2)AとC

のものにわけてできるのであれば、もうひとつ新しいクエリを作ります。
そのクエリをUnionクエリにして、

Select * From クエリ(1)
Union
Select * From クエリ(2)

と記載すれば、2つのクエリが1つの表にできます。
ですが、Unionクエリを使うのであれば、
クエリ(1)とクエリ(2)の表示フィールド名が全く同じ数、同じ名前でなければいけません。
また、上記のUnionクエリだとクエリ(1)とクエリ(2)で全く同じ結果があった場合、
1つのレコードとして取られてしまうので、別物として扱いたいのならSelectのUnion部分をUnion All と記載してUnionクエリを作成してみてください。
    • good
    • 0
この回答へのお礼

有難う御座います。
大変参考になりました。
Unionクエリとは、やったことがないので是非トライしてみたいと思います。

お礼日時:2005/05/28 17:04

><ルール>


>テーブル→A、B、C
>レコード番号→1、2、3・・・
>Ex.テーブルAのデータ番号1 → 「A1」と表記
>  テーブルCのデータ番号3 → 「C3」と表記

「レコード番号」「データ番号」の意味が良く分かりません。
できれば、「テーブル名」「フィールド名」を具体的に示してもらえませんか?
(もちろん架空のものでも結構です。)

><前提>
>テーブルA、B、Cのそれぞれに「顧客ID」というフィールドがあり、
>これを根拠にリレーションをとっています。A、B、Cは「顧客ID」と言う点ではつながりがありますが、
>BとCとは「顧客ID」という以外につながりがりがありません。

・・・という事は、BとCも「顧客ID」と言う点でつながりがあるんですよね。
A,B,Cのつながりと、BとCのつながりの“違い”は何でしょう。


><出力したいレポートの形>
>大見出しをA1、A2、A3とした上で、A1に関係するBテーブルのデータ、
>Cテーブルのデータを集めたいのです。
>この場合、BとCのデータは単純に小分類としてそれぞれが素直にAに
>関連するものだけがおかれるだけにしたいです(BとCを絡めたたくない)。

できればどのようなクエリーを作ったのか、具体的に示していただければ
解凍もしやすいと思うのですが。

>リレーションの組み方で解決できるものなのでしょうか?
>それとも、クエリをAとB、AとCのものにそれぞれ分けて、レポートも別々に
>出力するしかないのでしょうか?出来れば1つの表にしたいのですが・・・

クエリをAとB、AとCのものをそれぞれ作成し、さらにこの2つのクエリーを
元にクエリーを作成してみてはどうでしょう。
    • good
    • 0
この回答へのお礼

有難う御座います。
質問の仕方が具体性に欠けていてすみませんでした。
クエリを2つ作成して、Unionクエリの方法をとってみようと思います。

お礼日時:2005/05/28 17:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!