ID非公開
ID非公開さん
2021/1/21 12:40
1回答
2つのテーブルをUPDATEする時のSQL文について
2つのテーブルをUPDATEする時のSQL文について 国際大会の参加者と国のテーブルがあります。 ①参加者テーブル (players) ・id ・name (名前) ・age (年齢) ・country_id (出身国のid) ②国テーブル (countries) ・id ・name (国名) まず、参加者テーブルに国名を加えて以下のように表示しました。 (参加者の名前、年齢、出身国の国名) SELECT p.name, p.age, (SELECT c.name FROM countries c WHERE c.id = p.country_id) AS country FROM players p; 表示したものを編集して更新できるようにしたいのですが、 下記のSQL文だと、同じcountry_idをもつ参加者の国名部分が一緒に更新されてしまいます。 UPDATE players p, countries c SET p.name = “太郎”, c.name = “日本”, p.age = “27” WHERE p.id= 1 AND p.country_id = c.id; id=1 の選手のみ国名を変えるにはどうしたらよいでしょうか?
ベストアンサー
>id=1 の選手のみ国名を変えるにはどうしたらよいでしょうか? それは「国名を変える」のではなく、そのplayer の「出身国のid」を変えないといけませんよね? 例えば日本の id が 81 なら、 update players set name = “太郎”, country_id =81, age =27 where id=1 であるべきです。 そもそもselectも select playes.name, playes.age, playes.country_id, countries.name from playes left join countries on playes.country_id=countries.id が適切だと思いますが・・・
playersの保守画面をphpで作っているなら(第一カテゴリがphpでしたね)、国はselect要素で作成してoption要素のvalue属性をcountriesテーブルのid、コンテンツ(表示する名前)をnameにしてそこから選択させる(formから送られるのはcoutries.id)ようにすべきです。
質問者からのお礼コメント
うまくいきました、ありがとうございます。 とても参考になりました。
お礼日時:1/21 13:58