お世話になります、
二つの表の項目を比較して値を取得するSQLを作成しているのですが、うまくいきません。
具体的には
Aテーブル
NAME | PRICE
------|------
リンゴ | 100
------|------
オレンジ | 200
------|------
ブドウ | 300
------|------
Bテーブル
NAME | PRICE
------|------
リンゴ | 1000
------|------
オレンジ | 200
------|------
ブドウ | 1300
------|------
という二つのテーブルA、Bがあったとします。
このA,Bの二つのテーブルのそれぞれの果物のPRAICEを比較してBのPRICEがアップしている果物を出力するという
SQLを教えてください。
<ほしい結果>
NAME | PRICE
------|------
リンゴ | 1000
------|------
ブドウ | 1300
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No.1の ymmasayan です。
hana432 さんの指摘は重要です。
> AテーブルのNAMEとBテーブルのNAMEは、1:1と考えてよいですか?
この条件が満たされない場合は副照会を使う必要が出てくるでしょう。
ただ、そのあとに多少疑問があります。
> もし、「Aテーブルには無くてBテーブルにはある」もしくはその逆のパターンのデータが存在するのであれば上記の条件では不備があるので注意してください。
このような不備はありません。一方がなくても比較をしないだけ(本当は比較にすら行かない)なので、心配する必要はありません。
この回答への補足
こんにちは、ご指摘ありがとうございます。
指摘のとおり、AテーブルのNAMEとBテーブルのNAMEは、1:1と考えてけっこうです。
Aテーブルに有るものはBテーブルには必ず存在すると考えてください。
以上よろしくお願いします。
No.4
- 回答日時:
Aに無くてBのみがある場合にも、対象として抽出したりする時には、下記のようなSQLも面白いかもね。
select b.name, b.price from a,b
where a.name = b.name
and b.price > a.price
union
select b.name, b.price from b
where b.name not in
(select a.name from a);
蛇足SQLでした。
No.2
- 回答日時:
AテーブルのNAMEとBテーブルのNAMEは、1:1と考えてよいですか?それなら、NAMEをリレーションとする条件をWHERE句に書いて、AとBの比較をするだけでいいかなーと思います。
select
B.NAME,
B.PRICE
from
Aテーブル A,
Bテーブル B
where
A.NAME = B.NAME -- AとBで一致するNAMEのものを取得
and A.PRICE < B.PRICE -- 一致する中で、Bの値段が高いものを取得
;
もし、「Aテーブルには無くてBテーブルにはある」もしくはその逆のパターンのデータが存在するのであれば上記の条件では不備があるので注意してください。
その時はまた補足してください。もしかしたらお役に立てるかも。
No.1
- 回答日時:
select B.NAME,B.PRICE FROM A,B
where A.NAME=B.NAME AND B.PRICE>A.PRICE
でよいと思うのですが。
よくやる間違いは A.NAME=B.NAME 部分の定義忘れです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- PHP 配列について教えて下さい。 2 2023/03/06 10:29
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Oracle SQL update方法 2 2022/06/22 14:07
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
SQLで違うテーブルの値を比較して値に差があるレコードを抽出したいので
Oracle
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
2つの列が同じ値の行を取得するSQL
Oracle
-
-
4
テーブルの差分をとる結合
SQL Server
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビューで引数を使いたい
-
ACCESS 一番最新の日付の金額...
-
Accessで在庫管理を
-
SQL 件数取得を速くしたい
-
条件が混在しているSQLで値取得
-
Access関数について クエリで空...
-
複数のテーブルから同じ条件で...
-
SQLで○○の値以外を持っているレ...
-
select into句のトランザクショ...
-
Accessクエリでのグループ化
-
一般的なSQLでの処理
-
SQLの書き方
-
リレーションシップ 全データを...
-
2つのテーブルを結合して合計(...
-
「マスタ」と「テーブル」の違...
-
[ BETWEEN ] vs [ >= AND <= ]
-
2つの項目が重複するレコード...
-
2つのテーブルから条件に一致...
-
オラクルではできるのにSQLSERV...
-
ManagementStudioからのデータ削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 一番最新の日付の金額...
-
ビューで引数を使いたい
-
IFで条件を分岐させてのINSERT...
-
大学でSQLの授業があるのですが...
-
二つの表の項目を比較して値を...
-
Accessで在庫管理を
-
SQLについて質問です。 テーブ...
-
SQL 件数取得を速くしたい
-
複数のテーブルから同じ条件で...
-
空のテーブルの判別
-
INSERT文でサブクエリ
-
SQLの書き方
-
DB2 業種毎に連番をつけたいの...
-
Insert Into Select での重複に...
-
Access関数について クエリで空...
-
SQLで○○の値以外を持っているレ...
-
Sql文のUpdateと副問い合わせで...
-
select into句のトランザクショ...
-
リレーションシップ 全データを...
-
条件が混在しているSQLで値取得
おすすめ情報