- 投稿日:2021-08-06T10:47:36+09:00
[備忘録]SQLクエリまとめ③
今回もSQLの復習やっていきます! サブクエリ 2つ以上のクエリを1つにまとめられる ()で囲むことでサブクエリを使用できる サブクエリが実行されたあとに、外側のクエリが実行される メッシよりも得点数の多い選手名 SELECT name FROM players WHERE goals > ( SELECT goals FROM players WHERE name = "メッシ" ); AS カラム名などに別名を定義できる カラム名 AS "名前" goalsを「ロナウドの得点数」と定義 SELECT goals AS "ロナウドの得点数" FROM players WHERE name = "ロナウド"; JOIN ONで条件を指定して、テーブルAにテーブルBを結合できる SELECT * FROM テーブルA JOIN テーブルB ON 結合条件 取得したいそれぞれのテーブルのカラム名を指定 SELECT players.name, countries.name FROM players JOIN countries ON players.country_id = countries.id; LEFT JOIN 外部キーがNULLのレコードも取得できる SELECT * FROM テーブルA LEFT JOIN テーブルB ON 結合条件 チームが決まっていない選手もいるため、LEFTJOIN使用 SELECT * FROM players LEFT JOIN teams ON players.previous_team_id = teams.id; 3つ以上のテーブル結合 JOINは1つのクエリで、複数回使用できるので、3つ以上のテーブルの結合も可能 players,countries,teamsテーブルを結合 SELECT * FROM players JOIN countries ON players.country_id = countries.id LEFT JOIN teams ON players.previous_team_id = teams.id; まとめ 今回は、サブクエリとJOINのみ、サブクエリは取得する順番がサブクエリ→外側のクエリ、JOINは結合条件はテーブルA.カラム名 = テーブルB.カラム名となるところに注意が必要。 3つ以上のテーブルを結合できると、はじめて知ったのでもっと複雑なデータの取得ができそうです!
- 投稿日:2021-08-06T09:20:24+09:00
docker-compose upした際のログが出ない問題
今回の問題 今回はただ今Docker初心者の私がとても悩んだ問題です。 正直、メンターさんと一緒に考えてもなかなか答えが見えなかった問題でした。 調べても調べてもなかなか出てこなくてものすごく大変でした。 やっと解決したので、今後のためにも残しておこうと思います。 使用環境 ・Ruby(2.5.7) ・Ruby on Rails (6.1.3.2) ・Docker (20.10.7) ・MySQL (5.7) 問題点 上のスクリーンショットを見ていただくと、本来スクリーンショット最下部「Use Ctrl-C to stop」以下にRailsのログ情報が本来出力されるはずなのですが、Railsを起動して画面読み込みをしても何もログが出力されていません。(動作自体は正常にしています。) ターミナル $ docker-compose up -d $ docker attach onsen_app_1 で起動したコンテナに接続してもRailsのログは出力されませんでした。 Docker化する以前は問題なくRailsログがターミナルに出力されていたので、Docker化した際の設定に原因があるかと思いましたが、調査してもどこが引っかかっているのかわかりませんでした。 解決方法 結論を先に言うと、今回の原因は「config/environments/development.rb」にある記述を追加すれば正常に動くことができました。 development.rb Rails.application.configure do # ... config.logger = Logger.new(STDOUT) # ... end 上記に書いた「config.logger = Logger.new(STDOUT)」と言うのを「config/environments/development.rb」に追加すれば、正常に動くようになりました。 ちなみに「rails STDOUT not working docker」で検索したらようやくヒットしました。 最後に Dockerはまだまだ初心者ゆえに大変な作業でした。 これからもDockerにはお世話になると思うので、勉強は怠らずに励んでいきたいですね。 変なまとまりになりましたが、以上で終了です。 見て頂きありがとうございました。 参考サイトです。 https://blog.eq8.eu/til/ruby-logs-and-puts-not-shown-in-docker-container-logs.html