ver3.23のMySQLとPerlでデータベースを作っています。
検索方法でちょっと詰まってしまったので、
質問させていただきます。
以下のようなテーブルがあるとします。
tableA(基本名簿)
AID name sr
1 aaa 100
2 bbb 100
3 ccc 100
4 ddd 100
5 eee 100
6 fff 200
tableB(対応履歴)
BID cr
1 40
1 50
1 60
3 40
3 50
3 60
AIDはBIDに対応します。
ここでやりたいのは、
「'sr'が100であり、なおかつ'cr'が40ではない(結合後のテーブルにおいてnullである)tableAのレコードを取り出す」
ということです。
以下のような結果が理想です。
AID name cr sr
2 bbb null 100
4 ddd null 100
5 eee null 100
いろいろ試した結果、
AID name cr sr
1 aaa 40 100
2 bbb null 100
3 ccc 40 100
4 ddd null 100
5 eee null 100
このような結果が出る段階まではたどり着きました。
以下がそのコードです。
SELECT * FROM tableA as A left join tableB as B
on A.AID = B.BID and cr =40
WHERE sr = 100
order by AID
以上のような結果が出たので、
三行目に"and cr != 40"や"and cr = null"などを足してみたのですが、
結果はemptyでした。
NOT EXISTSを最初は試みたのですが、
よく読んだらバージョンが古くて使えませんでした。
混乱しすぎて何か基本的な事をおろそかにしている気もするのですが…
わかる方いらっしゃいましたらぜひご教示くださいませ。
No.1ベストアンサー
- 回答日時:
第一に3.23はサポート終了バージョンなので自己解決できないなら
使用を中止すべきです。
今回の件については普通はサブクエリを使えば出来ますが、
3.23系ということでテンポラリをつかって処理します。
またnullは等号ではなくisで判断します。
create temporary table tableC select BID from tableB WHERE cr=40;
SELECT * FROM tableA as A left join tableC as C on A.AID = C.BID WHERE sr =100 and BID is null;
ご回答ありがとうございました。
>第一に3.23はサポート終了バージョンなので自己解決できないなら
使用を中止すべきです。
まずご忠告ありがとうございます。
他でもバージョンアップした方が良い局面が何回かあったので、
諮ってみたいと思います。
>またnullは等号ではなくisで判断します。
これは迂闊でした…。
アドバイスいただいたおかげでうまくいきました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL mysqlの結合について教えてください 1 2022/05/19 15:13
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- オープンソース Try Kotlinで readLine()を使うには 1 2023/03/27 21:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLです。あってますか?↓
-
テーブル名が可変の場合のクエ...
-
SQLです教えてくださいお願いし...
-
SQLです下記の問合せを行うクエ...
-
int(11)の(11)とは何を意味して...
-
SQLです教えてくださいお願いし...
-
下記の問合せを行うクエリを、 ...
-
#1062 - '0' は索引 'PRIMARY' ...
-
SQLでカラムを追加し、条件に合...
-
データベースの接続に失敗して...
-
SQLです。下記の問合せを行うク...
-
select *, `人口(男)`AND`人口(...
-
PhpMyAdminで作成して実行せよ...
-
2つのテーブルを結合するときに...
-
mysqlで INSERT と SELECTの用途は
-
レコードの削除で delete from ...
-
sqlのエラー
-
同一のユーザー、同一商品のと...
-
SQL文のエラー
-
Xサーバーのバックアップで全サ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Null値が入れられない
-
NULLを含む列の足し算
-
SQLでLIMIT句を入れるとエラー...
-
nullと同じく空白をCountしない...
-
MySQLの特定のカラムの内容を全...
-
テーブル作成時に、「`id` int(...
-
SQL文を入力したらエラー
-
phpとSQLで複数条件で検索する...
-
MySQLで関連したデータを横に並...
-
VIEWに対してWHERE句をつける
-
空白文字を含む文字列データの検索
-
後でemailに追加でPRIMARY KEY...
-
SQL任意に並び替えをしたい
-
sqlの中で、 例えば条件句で AN...
-
コマンドプロンプト 実行結果...
-
SELECT文の二段重ね
-
count()の結果を別の計算で使う...
-
JOIN使ってないのに、JOIN操作...
-
コマンドプロンプト 複数の実...
-
MySQL + PHP での自動採番
おすすめ情報