
リレーションか、結合どちらになるかわからないのですが、
たとえば例をあげると
syohin:【商品リスト】と【荷物の大きさ】
souryou:【荷物の大きさ】と【送料】
というテーブルがあるとします。
syohin type
-----------
001 A
002 B
003 C
type souryou
--------------
A 500
B 1000
C 1500
SQL文で、syohinとsouryouを出力したいのですが、
(例:商品002のみ「商品名」と「送料」を出したい)
syohin souryou
----------------
002 1000
のですが、どのようなSQL文になるのでしょうか?
これがリレーションであるならば、テーブルの作成時や、フィールドの作成時に何かしらのオプション設定が必要なのでしょうか?
No.2ベストアンサー
- 回答日時:
select a.syohin, b.souryou
from syohin a, souryou b
where a.type = b.type
and a.syohin = '002'
でどうでしょう。
この回答への補足
テーブル名を[a]=[syohin], [b]=[souryou]と考えました。テーブルは#1の補足の通りです。
mysql> select syohin.syohin, souryou.souryou from syohin syohin, souryou souryou where syohin.type = souryou.type and syohin.syohin = '002';
+--------+---------+
| syohin | souryou |
+--------+---------+
| 002 | 1000 |
+--------+---------+
1 row in set (0.00 sec)
希望通りの結果が出ました、ありがとうございます。これだけでも「複雑になったなぁ」と躊躇してしまいましたが、もっと複雑怪奇なSQL文を使ってこそ、柔軟な検索ができるんでしょうね。
from syohin syohin, souryou souryou を
from syohin, souryou に変えても同じ結果が出たのですが、上の2つはどう違うのでしょうか?

No.3
- 回答日時:
>from syohin syohin, souryou souryou を
>from syohin, souryou に変えても同じ結果が出たのですが、上の2つはどう違うのでしょうか?
SQLにasというコマンドがあります。
これは列名やテーブル名に別名をつけるものです。
たとえばchonagaitableとchonagaitable2というテーブルがあるとします。
通常は
select
chonagaitable.A,
chonagaitable.C,
chonagaitable.D,
chonagaitable2.Z
from
chonagaitable,chonagaitable2
などとしますがこれだと長いテーブル名を
いちいち書かなくてはなりません。
asで別名をつけてやると
select
cho.A,
cho.C,
cho.D,
cho2.Z
from
chonagaitable as cho,
chonagaitable2 as cho2
と短くできます。
MySQLの場合asは省略できます。
つまり
from syohin syohin, souryou souryou
は
from syohin as syohin, souryou as souryou
と同じです。
しかし、これだと同じ名前をつけているので
asの意味がないですね。
だからfrom syohin, souryouだけでOKです。
上の例の場合2つのテーブルに同じ列名が無い
なら「chonagaitable.」「cho.」などテーブル名は省略して
select
A,
C,
D,
Z
from
chonagaitable,chonagaitable2
と書いても大丈夫です。
同じ列名がある場合はテーブル名を指定する必要があります。
その場合、asを使って列名にも別名をつけると便利です。
select
cho.A as A1,
cho2.A as A2,
cho.C,
cho.D,
cho2.Z
from
chonagaitable as cho,
chonagaitable2 as cho2
とすることでcho.AはA1という列名で
cho2.AはA2という列名で表示されます。
こちらのasも省略できます。
No.1
- 回答日時:
質問内容の結果を求めるには、
select
syohin,souryou
from
syohin A,souryou B
where
A.type = B.souryou
and
A.type = B
だと思います。
この回答への補足
mysql> select * from syohin;
+--------+------+
| syohin | type |
+--------+------+
| 001 | A |
| 002 | B |
| 003 | C |
+--------+------+
3 rows in set (0.00 sec)
mysql> select * from souryou;
+------+---------+
| type | souryou |
+------+---------+
| A | 500 |
| B | 1000 |
| C | 1500 |
+------+---------+
3 rows in set (0.00 sec)
mysql> select syohin,souryou from syohin A, souryou B where A.type = B.souryou and A.t
ype = 'B';
Empty set (0.00 sec)
という結果になってしまいました。
mysql> select syohin,souryou from syohin A, souryou B;
+--------+---------+
| syohin | souryou |
+--------+---------+
| 001 | 500 |
| 002 | 500 |
| 003 | 500 |
| 001 | 1000 |
| 002 | 1000 |
| 003 | 1000 |
| 001 | 1500 |
| 002 | 1500 |
| 003 | 1500 |
+--------+---------+
ここまでは、#2の方と書式は違うけれど、同じ結果が出ていますので、where句以降を修正すれば希望通りの結果が出ると思います。ヒントをいただきましてありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(データベース) accessについて 2 2022/05/31 16:58
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Excel(エクセル) エクセルの表について 3 2023/04/14 18:00
- Oracle SQLの書き方について 1 2023/04/13 09:54
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
SQLで、Join句で結合したテ...
-
SQLサーバに対するSQL文で抽出...
-
既存データをINSERT文にして出...
-
結合したテーブルをSUMしたい
-
ACCESSの初歩的質問です。
-
データ無し時は空白行にしたい...
-
副問合せを使わずにUNIONと同様...
-
(SQL)日数の計算
-
数種類のテーブルを結合させて...
-
AccessVBAでExcelをリンクテー...
-
pythonでsqlight勉強中、クエリ...
-
DB、キャストとインサートを...
-
異なるテーブルの値を比較テー...
-
Excelでしりとりを作る方法
-
ACCESSのVBAにてExcelに行...
-
ExcelのVLOOKUP関数の動作をMyS...
-
ACCESS-VBAでEXCEL出力
-
フラグをたてるってどういうこ...
-
UPDATEで既存のレコードに文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
2つのテーブルをLIKE演算子のよ...
-
結合したテーブルをSUMしたい
-
副問合せを使わずにUNIONと同様...
-
SQLサーバに対するSQL文で抽出...
-
テーブル名が可変の場合のクエ...
-
同一テーブル内での比較(最新...
-
ADO+ODBCでテーブルに接続する...
-
PRIMARY KEYのコピー
-
ACCESS クエリーでソートの不具合
-
ExcelのMatch関数のようなもの...
-
ACCESSのVBAにてExcelに行...
-
複数のテーブルからデータを取...
-
DB2のSQLコマンドについて
-
データ無し時は空白行にしたい...
-
ExcelのVLOOKUP関数の動作をMyS...
-
重複データの一方を削除するSQL...
おすすめ情報