- PR -

WHERE句の条件設定について

1
投稿者投稿内容
とみ
会議室デビュー日: 2005/01/20
投稿数: 10
投稿日時: 2005-01-27 13:40
いつもお世話になっております。


いま、テーブル2つを結合したいのですが、

テーブルP…日付・ID・金額・区分・区分名 (35行)
テーブルQ…日付・ID・金額・フラグ・フラグ名 (35行)
PとQを結合して作りたいテーブル
    …日付・ID・金額・区分・区分名・フラグ・フラグ名 (35行)

PとQの日付・ID・金額はデータ1個1個の並び順も全く一緒で
形としてはテーブルPにテーブルQのフラグ・フラグ名の2列をくっつけたいのですが
条件の設定ができていないため結合してできたテーブルは50行や65行になってしまいます。

例えばWHEREの条件を下記のように設定するとできたテーブルは50行になります。↓

SELECT DISTINCT P.日付, P.ID ,P.金額, P.区分, P.区分名, Q.フラグ, Q.フラグ名
FROM P,Q
WHERE P.日付=Q.日付 ;

何がダブっているかというと・・・・

+------+------+----------+
| 金額 | 区分 | フラグ |
+------+------+----------+
| 1300 | 20 | 0 |
| 1300 | 50 | 0 |
| 1300 | 30 | 1 |
+------+------+----------+
結果としてほしいテーブルにおいて上の表のようなとき、上記のSELECT文を実行すると・・・

+------+------+----------+
| 金額 | 区分 | フラグ |
+------+------+----------+
| 1300 | 20 | 0 |
| 1300 | 50 | 0 |
| 1300 | 30 | 0 |
| 1300 | 20 | 1 |
| 1300 | 50 | 1 |
| 1300 | 30 | 1 |

金額1300に対して区分は20,30,50の3通り、フラグは0,1の2通りある事からなのか、
6行出てきてしまいます。
これを解消する為にWHEREにどういう条件文を入れればいいのかがわかりません。
どなたかご教授いただけないでしょうか?
ishi
会議室デビュー日: 2004/07/16
投稿数: 17
投稿日時: 2005-01-27 14:02

P,Qテーブルは(日付,ID,金額)でユニークになるんですよね?

であれば、

SELECT DISTINCT P.日付, P.ID ,P.金額, P.区分, P.区分名, Q.フラグ, Q.フラグ名
FROM P,Q
WHERE P.日付=Q.日付 AND P.ID=Q.ID AND P.金額=Q.金額 ;

ですよね?
とみ
会議室デビュー日: 2005/01/20
投稿数: 10
投稿日時: 2005-01-27 14:53
ishi様コメントありがとうございました。
どういう条件でユニークになるか、がぬけていました。
ご教授ありがとうございました。
ほしいテーブルを作ることができました。


基礎を固めて、もっと身のある質問ができるよう学習します。
いつもありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)