お世話になります、
二つの表の項目を比較して値を取得する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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
SQLで違うテーブルの値を比較して値に差があるレコードを抽出したいので
Oracle
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
2つの列が同じ値の行を取得するSQL
Oracle
-
-
4
テーブルの差分をとる結合
SQL Server
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
データがあれば○○なければのSQL
その他(プログラミング・Web制作)
-
7
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビューで引数を使いたい
-
Accessで在庫管理を
-
DB2 業種毎に連番をつけたいの...
-
大学でSQLの授業があるのですが...
-
SQLについて質問です。 テーブ...
-
INSERT文でサブクエリ
-
SQL文を教えて下さい
-
「マスタ」と「テーブル」の違...
-
accessテーブル作成クエリを実...
-
ACCESSのSQLで、NULLかNULLでな...
-
SELECT文でのデッドロックに対...
-
2つの項目が重複するレコード...
-
[ BETWEEN ] vs [ >= AND <= ]
-
2つのテーブルから条件に一致...
-
Accessでクエリを完了できませ...
-
続.ORACLEのSELECTのソートに...
-
数百万件レコードのdelete
-
Accessにインポートしたら並び...
-
mysql IN句に1データだけ指定...
-
Access VBA Me.Requery レコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ビューで引数を使いたい
-
ACCESS 一番最新の日付の金額...
-
Accessで在庫管理を
-
IFで条件を分岐させてのINSERT...
-
DB2 業種毎に連番をつけたいの...
-
複数のテーブルから同じ条件で...
-
二つの表の項目を比較して値を...
-
SQLで○○の値以外を持っているレ...
-
select into句のトランザクショ...
-
SQLについて質問です。 テーブ...
-
Sql文のUpdateと副問い合わせで...
-
大学でSQLの授業があるのですが...
-
SQLの書き方
-
空のテーブルの判別
-
2つのテーブルを結合して合計(...
-
Accessクエリでのグループ化
-
SQL 件数取得を速くしたい
-
Insert Into Select での重複に...
-
INSERT文でサブクエリ
-
リレーションシップ 全データを...
おすすめ情報