プログラミング学習初心者の壁〜SQL文で複数テーブルのデータを取る〜【ウェブカツ】


プログラミング勉強を始めてはや丸8ヶ月・・・。そしてもう今年が終わる・・・。

プログラミングを勉強する癖はすっかり付いていますが、今までお手本を模写しかしてこなかった私。今、ウェブカツのWEBサイト共同開発チームに入れてもらってます。

そこでも圧倒的にプログラミング技術のない私が、普通の人がやるところのおそらく5倍くらい理解にかけて悩んできたことを備忘録としてまとめれればと思います。

同じように、複数データベースからデータを取るSQL文が書けなくて悩んでいる人の助けになりますように。

関連記事

今までのウェブカツプログラミング学習記録はこちら

プログラミング学習の壁:データベースから情報を取ってくるSQL文作成

SQL文とは、データベースにアクセスし、なんの情報を取ってきてほしいのかを指定するためのもの。

例えば、転職サイトをプログラミングしているとして、転職会議のような口コミサイトのマイページに、そのユーザーの過去の職歴の口コミレビューを表示したいとします。

必要な情報は、ユーザーの口コミした会社名、口コミの中でも良かったところ、悪かったところ、務めた期間、給料などを取ってきたいでしょう。

全てが同じデータベースのテーブルにあればいいですが、そうもいかないですよね。

1つのテーブルからデータを取る場合と、複数から取る場合のSQL文

question

例えばユーザーの名前はuserテーブルに、口コミした会社名はcompanyテーブルに、給与はsalaryテーブルに、口コミ内容はreviewテーブルに入っているとします。

userテーブル

id 1
u_name carrie
salary_id 2
review_id この会社は非常に働きやすかったです。
company_id 100

 

salaryテーブル

id 2
salary $4000

 

reviewテーブル

id 3
review この会社は非常に働きやすかったです。

で、あなたがプログラミングで表示させなければいけないのはこういう順番。

  • あなたの名前:
  • あなたの務めていた会社:
  • あなたの給料:
  • 口コミ内容:

となると、 複数のテーブルデータをつなぎ合わせるためのSQL文を書かないといけないんです!

ただでさえSQLってややこしそうやのに。。。

例えば、user nameを取ってくるのはシンプルですね。一つのテーブル情報でいいから。

usersテーブルを取って来るSQL文

$sql=SELECT user_name FROM users;

(usersテーブルのuser_nameを取ってきてね)

でも例えば、salary(給料)を取ってくるのはどうでしょう。

サラリーを入れてるテーブルは、user_idが入っていないので、salaryテーブルだけじゃ表示ができません。(htmlの箇所でphp表示させる方法もありますけどね)

ということは、テーブルをくっつけなきゃいけない。それがLEFT JOINなんですね。

なので、SQL文はこうなります。

salaryとusersテーブルをくっつけるSQL文

$sql=SELECT u.salary_id, s.salary FROM users AS u LEFT JOIN salary as s ON u.salary_id = s.id;

(userテーブル(uとする)にあるsalary_idとsalaryテーブル(今後sとする)にあるsalaryをそれぞれのテーブルのsalary idが一致するデータを取り出してね)。※ASを使うことで毎回フルネームでテーブルを書く必要がなくなります。

そうすると黄色の部分がくっつく形になるのです。
userテーブル

id
u_name
salary_id
review_id
company_id

salaryテーブル

id
salary

SQL文でデータを取ってきたら、どのデータを取り出すかをプログラミングで指示していきます。それはまた次回。

SQL文でちゃんと動いたときの感動といったらもう!プログラミングの中でも簡単そうで意外と壁ですが、頑張って乗り越えましょう。
この本も非常に役に立ちました!

本気のプログラミング学習はウェブカツがおすすめ

programming

私はプログラミングスクール「ウェブカツ」で学習しています。

今回私がプログラミング学習において、SQL学習においてもがいているのを助けてくれたのは、同じスクールに通い、今一緒にWEBサイトの共同開発をしている人たちです。未経験から、経験者顔負けの技術まで教えてもらえます。

私は幸い女性割引制度があるときに入部しました。ありがたい限りです。

全部の部活を終えるまであきらめずに頑張ります!

プログラミング勉強に興味をもったかたはウェブカツの公式ページへどうぞ!

ABOUTこの記事をかいた人

取り柄=英会話。【毎日が楽しい】人生を追い求めて2●年。【職歴】海外営業→英会話講師→広告営業→事務で今に至る。【仕事=楽しい】を探し続けた結果、ライターになりたいことに気付く。現在は会社員の傍らブログの更新、ライターとしても活動しようと模索中。 決断に困ったときは【1年後死んで後悔しないか?】自分に聞く。