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

こんにちわ。

■テーブルA
ID |名称 |
--------------
01 |ああ |
02 |いい |
03 |うう |


■テーブルB
ID |場号1 |番号2
--------------
01 |03 |01
02 |02 |03
03 |03 |02


この2つのテーブルを下記のように結合したいのです。

テーブルB.ID, テーブルB.番号1, テーブルA.名称(番号1より), テーブルB.番号21, テーブルA.名称(番号2より)

つまり、
01 | 03 | うう | 01 | ああ
という形で、

テーブルA.名称(番号1より)または テーブルA.名称(番号2より)
だけであれば参照できるのですが同じテーブルからの2回参照ができません。。

どうかご教授ください。

A 回答 (3件)

この手の場合、普通は外部結合しますね(明示的でわかりやすいし)


inner joinでもいいですが、何らかの理由で名称がないことも
想定するとleft joinが妥当でしょう。

SELECT
`テーブルB`.`ID`, `テーブルB`.`番号1`, A1.`名称` , `テーブルB`.`番号2`, A2.`名称`
FROM `テーブルB`
LEFT JOIN `テーブルA` AS A1 ON `テーブルB`.`番号1`=A1.`ID`
LEFT JOIN `テーブルA` AS A2 ON `テーブルB`.`番号2`=A2.`ID`
    • good
    • 2

テーブルAを別名で2つ利用すればいいかと。



ANo.1さんのSQLをアレンジして、
select b.id
b.番号1
a.名称
b.番号2
c.名称
from テーブルA a,
テーブルB b,
テーブルA c
where b.番号1 = a.ID
and b.番号2 = c.ID

かな。

似たような質問がほかにもありましたので詳しくは、
参考URLのANo.4の後半、「次に、1テーブルを別名で結合する件ですが、~」以降を見てください。

参考URL:http://okwave.jp/qa3001981.html
    • good
    • 0

select b.id


b.番号1
a.名称
b.番号2
c.名称
from テーブルA a,
テーブルB b,
(select * from テーブルA) c
where b.番号1 = a.ID
and b.番号2 = c.ID

テスト環境がないから自信なし。
ベンダーによって構文も違うし。
    • good
    • 0

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

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