アプリ版:「スタンプのみでお礼する」機能のリリースについて

うまく説明できないのですが、

テーブル1   テーブル2
No|名前    ID|午前担当|午後担当
――――  ――――――――――
01|Aさん   01|     1|     2
02|Bさん   02|     3|     4
03|Cさん   03|     5|     1
04|Dさん   04|     2|     3
05|Eさん   05|     4|     5

上の2つのテーブルを結合させて、

結合後テーブル
No|午前担当|午後担当
――――――――――
01|  Aさん|  Bさん
02|  Cさん|  Dさん
03|  Eさん|  Aさん
04|  Bさん|  Cさん
05|  Dさん|  Eさん

上のように表示させたいのですが、
どのように結合したらよいのでしょうか?

どうぞ、ご教授よろしくお願いしますm(_ _)m

A 回答 (2件)

>どのように結合したらよいのでしょうか?


テーブル2に対してテーブル1を2つ結合させれば出来ます。
下記ではテーブル1を2回結合させるためテーブル1とテーブル1_1として結合させています。

SELECT テーブル2.ID, (テーブル1.名前) AS 午前担当, (テーブル1_1.名前) AS 午後担当
FROM (テーブル2 LEFT JOIN テーブル1 ON テーブル2.午前担当 = テーブル1.[No]) LEFT JOIN テーブル1 AS テーブル1_1 ON テーブル2.午後担当 = テーブル1_1.[No]
ORDER BY テーブル2.ID;

INNER JOINを使うとテーブル2の午前・午後担当フィールドにNullがあった場合表示されないのでLEFT JOINとしてNullの場合も表示させるよう対応しています。
Nullは絶対ないという場合ならLEFT JOINをINNER JOINとしても大丈夫です。
これで出来ます。
    • good
    • 5

「課題の丸投げ」のような、質問の仕方はやめましょう。


ここの規約違反になり、削除さえる可能性があります
よ?

create table t1
(No smallint,
namae varchar(1));

insert into t1 values(1,'A');
insert into t1 values(2,'B');
insert into t1 values(3,'C');
insert into t1 values(4,'D');
insert into t1 values(5,'E');

create table t2
(ID smallint,
AM smallint,
PM smallint);

insert into t2 values(1,1,2);
insert into t2 values(2,3,4);
insert into t2 values(3,5,1);
insert into t2 values(4,2,3);
insert into t2 values(5,4,5);

select x.ID,x.namae,y.namae
from
(select ID,namae
from t2 left join t1 on AM=No) as x
inner join
(select ID,namae
from t2 left join t1 on PM=No) as y
on x.ID=y.ID;

※left joinのところは、inner joinでもいいのですが、「担当者を置かないこともある」と考えると、left joinがいいと考えました。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A