みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL文でのサブクエリの質問です。

いつもプログラムの質問でお世話になっております。
今回も誠に恐縮ですが今回もご教授いただけたらと思っております。
よろしくお願い致します。

現在、複数条件の絞込み検索のWEBアプリを制作中なのですが
MySQLでのSQL文を仮に下記のように入力したら玉田と表示できるようにしたいのですが、何も表示されません。
いろいろ考えたのですが、SQL文の正解がわかりません。
どのように入力したら玉田という名前のみ表示されるのでしょうか?
何卒よろしくお願いします。

SELECT code,name,team_name,price,position,gazou FROM mst_player_market WHERE 1 and (code IN (SELECT playerid FROM team WHERE team_id IN (1))) and (code IN (SELECT name,COUNT(*) FROM mst_player_market GROUP BY name HAVING name = 玉田));

テーブル名 mst_player_market


code name price gazou position team_name
15 玉田 70000000 player_bustup_11.jpg FW      名古屋
16 田口  4000000 player_bustup_28.jpg MF      名古屋
17 田鍋  6000000 player_bustup_14.jpg MF      名古屋
18 田中  120000000 player_bustup_04.jpg DF      名古屋
3 津田  40000000 p4389_img2.jpg    FW      徳島 
24 長谷川  30000000 p4399_img.jpg       GK      徳島
25 山口  30000000 photo021401851726.jpg MF         千葉
26 ケンペス 50000000 photo011401851481.jpg FW         千葉

テーブル名 team

playerid team_id team_name
15 1 名古屋
16 1 名古屋
17 1 名古屋
18 1 名古屋
21 1 名古屋
22 1 名古屋
23 2 徳島
24 2 徳島
25 3 千葉
26 3 千葉
28 2 徳島
29 2 徳島

投稿日時 - 2014-11-01 03:01:57

QNo.8809590

困ってます

質問者が選んだベストアンサー

動くようにするなら
SELECT code,name,team_name,price,position,gazou FROM mst_player_market WHERE
code IN (SELECT code FROM team WHERE team_id IN (1)) and
code IN (SELECT code FROM mst_player_market where name = '玉田')

ですね。

投稿日時 - 2014-11-01 07:06:10

お礼

いつもアドバイスありがとうございます。
説明不足にもかかわらず素晴らしい返答して頂いてありがとうございます。

教えて頂いたSQL文で無事に動きました。

本当にありがとうございました。

投稿日時 - 2014-11-01 17:30:11

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

……えーと、なんでそんなに複雑な SQL 文になっているのでしょうか?

とにかく玉田選手のデータを抽出したいなら
 SELECT code,name,team_name,price,position,gazou FROM mst_player_market WHERE code=15
で十分なはずです。

そうではなく、○○かつ××な選手という条件で検索したら玉田選手のデータだけがヒットするはずなのにそうならない、というのであれば、その条件を日本語(あるいはあなたの母国語)で補足願います。

……というか、テーブル構成おかしくね? 自分だったら

テーブル名 mst_player_market

code name price gazou position team_id
15 玉田 70000000 player_bustup_11.jpg FW      1
16 田口  4000000 player_bustup_28.jpg MF      1
17 田鍋  6000000 player_bustup_14.jpg MF      1
18 田中  120000000 player_bustup_04.jpg DF      1
3 津田  40000000 p4389_img2.jpg    FW      2 
24 長谷川  30000000 p4399_img.jpg       GK      2
25 山口  30000000 photo021401851726.jpg MF         3
26 ケンペス 50000000 photo011401851481.jpg FW         3

テーブル名 team

team_id team_name
1 名古屋
2 徳島
3 千葉

というふうにするか、加えて position も team と同様の別表にするけど。
あと、複数ポジションを任せられる選手はどうするつもりですか?

投稿日時 - 2014-11-01 05:18:24

補足

>そうではなく、○○かつ××な選手という条件で検索したら玉田選手のデータだけがヒットするはずなのにそうならない、

仰るとおり、選手名が○○選手かつチームが○○というデータがヒットしないので
ご教授いただければということでした。
説明不足すみません。

>加えて position も team と同様の別表にするけど。
あと、複数ポジションを任せられる選手はどうするつもりですか?

確かにそこまで考えてはいなかったです。
テーブル構成も適当過ぎました。
チーム名のカラムが2つのテーブルにあるのでかなり余分でした。

多くのヒントをいただきありがとうございます。

投稿日時 - 2014-11-02 18:55:03

あなたにオススメの質問