以下のようなSQL文があった場合
SELECT table_a.* FROM table_a LEFT JOIN table_b ON (table_a.id = table_b.aid)
これでtable_bを連結したtable_aができると思いますが、table_bのフィールドは
id , aid, value
となっていた場合、valueが「1」かつ「2」のデータを検索する場合は、どのようにWHERE句を書けばいいのでしょうか。
WHERE (table_b.value = '1' AND table_b.value = '2')
ではうまく取得出来ませんでした。
お分かりの方、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>valueが「1」かつ「2」のデータを検索する
この命題では日本語としてなりたたない
なんとなく言いたいことはわかるのだけど条件提示が杜撰すぎ
以下のどれかだと推測します
(1)valueが1および2を含むデータをすべて抽出
→仮に別途value=3のデータがあたったらそれも抽出
(2)valueが1および2を含むデータの内、1,2に該当するデータのみ抽出
→仮に別途value=3のデータがあってもむし
(3)valueが1および2しかないデータを抽出
→仮に別途value=3のデータがあったら1,2に合致しても抽出しない
たぶん(2)なんだろうなぁということで以下
//元データ
create table table_a (id int,data varchar(20));
insert into table_a values(1,'a1'),(2,'a2'),(3,'a3');
create table table_b (id int,aid int,value int);
insert into table_b values(1,1,1),(2,1,2),(3,1,3),(4,2,1),(5,2,2),(6,3,1),(6,3,3);
//単純な表示
SELECT * FROM table_a
WHERE table_a.id in (SELECT aid FROM table_b
where value in (1,2)
group by aid
having count(distinct value)=2
)
//table_bの情報も含めた表示
SELECT * FROM table_a
INNER JOIN table_b ON table_a.id = table_b.aid
and value in (1,2)
WHERE table_a.id in (SELECT aid FROM table_b
where value in (1,2)
group by aid
having count(distinct value)=2
)
杜撰な説明にも関わらず意図をくみ取っていただき有難うございます。
まさしく仰るとおり(2)で、しかも単純な表示の方でOKです。
やりたいことはぼんやりわかるのですが、それをSQLで表現するのが、自分はまだまだ未熟だと実感します。
こうして提示していただき、ひとつひとつかみ砕いて理解していき、最終的に思うとおりの結果に繋がりました。
本当に有難うございました!
No.1
- 回答日時:
> valueが「1」かつ「2」のデータを検索する場合は、どのようにWHERE句を書けばいいのでしょうか。
これでは車屋さんに行って、「ATかつMTの車を探してください」と言っているのと同じです。
valueには1つの値しか入りませんので、「valueが1かつ2」という状態はあり得ません。
検索条件を一度よく整理してみてください。
この回答への補足
少し説明が足りなかったようです。申し訳ありません。
table_bにaidが同一で、valueが違うデータが複数件挿入されています。
aidが同一で、valueが「1」と「2」のレコードを持つデータの情報をtable_aから抜き出したいということなのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- JavaScript 1度きりではなく、繰り返し、挙動が変わるようにしていただきたいです。 1 2022/07/03 15:50
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Excel(エクセル) エクセル マクロ A列の <table> ~ </table>までを C列に抜き出したい 6 2023/04/01 01:28
- PHP php エラー 2 2022/10/23 16:43
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
'modify' 付近に不適切な構文が...
-
IDとパスワードについて。
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
SELECTした結果に行番号を求めたい
-
PostgreSQLのtimestamp型で時間...
-
Accessの構成をコピーしたい
-
timestampのデータはどのように...
-
テーブル名が可変の場合のクエ...
-
追加クエリで重複データなしで...
-
DB2のSQLコマンドについて
-
truncate tableを使って複数の...
-
ExcelのMatch関数のようなもの...
-
結合したテーブルをSUMしたい
-
Access にて "mm:ss.0" 形式の ...
-
エラーを起こす方法
-
CSVファイルを読み込んでテーブ...
-
実行時エラー:2517 プロシージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
'modify' 付近に不適切な構文が...
-
MySQL初心者で困っています
-
複数表からのカウントを教えて...
-
sqlによるデータの変更
-
複雑なクエリ
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
結合したテーブルをSUMしたい
-
Accessで今日から5日後
-
既存データをINSERT文にして出...
-
timestampのデータはどのように...
-
SQLで、Join句で結合したテ...
-
PostgreSQLのtimestamp型で時間...
おすすめ情報