質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

5回答

4193閲覧

データベースと表の紐づけについて

freeair.

総合スコア15

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/09/26 02:33

編集2016/09/26 05:04

データベースからデータを1行ずつ取り出して、
縦に続く表を作っています。
今度は逆に、表から1行ずつデータを取り出して
データベースのアップデートを行いたいのですが
どのような方法があるのかわかりません。
参考になるサイト等あれば教えてほしいです。
よろしくお願いします。

失礼しました。
DBのイメージとしてはこんな感じ。

KOKYAKU_NO . NAME . ADDLESS . TELL 0001 A 東京 03-XXXX-XXXX 0002 B 東京 03-XXXX-XXXX 0003 0004 ・・・

jspで作った画面にこれと同じ感じの表を作っていて、レコードの数は一定じゃないので
while文で回してリストを作っていると思います。

こちらで作った表を、今度はDB側に更新する処理を追加したい(現状DB側からの一方通行になってるので)
です。

表の枠が定まってたらやり易いんですけど、この場合どうしたらいいんだろうという
疑問の上で質問させていただきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

現在、縦持ちのデータで

qualifications_verticalテーブル

employee_id qualification_id
100 1000
100 2000
100 3000
100 4000
101 1000
102 2000
102 3000
102 4000
103 3000
103 4000
104 1000
104 2000
104 4000
になっているとします。

これを以下のように横持ちにしたいとします。
employee_id qualification_id1 qualification_id2 qualification_id3 qualification_id4
100 1000 2000 3000 4000
101 1000 NULL NULL NULL
102 2000 3000 4000 NULL
103 3000 4000 NULL NULL
104 1000 2000 4000 NULL

この時のSQL文は
select
tmp.employee_id
,max(case tmp.seq when 1 then tmp.qualification_id else null end) as qualification_id1
,max(case tmp.seq when 2 then tmp.qualification_id else null end) as qualification_id2
,max(case tmp.seq when 3 then tmp.qualification_id else null end) as qualification_id3
,max(case tmp.seq when 4 then tmp.qualification_id else null end) as qualification_id4
from
(
select
employee_id
,qualification_id
,row_number() over (partition by employee_id) as seq
from
qualifications_vertical
) tmp
group by
tmp.employee_id
;
です。

http://dev.classmethod.jp/etc/sql-data-horizontal-vertical/
をご参照

SQL文に関しては
http://www.sql-reference.com/
などをご参照

ご参考まで

投稿2016/09/26 02:58

Yatsurugi

総合スコア1628

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

表からDBを更新する、ということが何をしたいのかはっきりしませんが、画面に表示されている既存のデータを編集し、DBに編集内容を保存するということでしょうか?

まず根本的な話として、一般的なWEBサーバーのプログラムの流れは、

(1)サーバー側プログラムがHTMLを作成 ↓ (2)作成されたHTMLが利用者のブラウザに返され、画面に表示される

という流れです。
つまり、表が作成され、画面に表示された時点でプログラムは既に動作を終了しています。
当然、そのままではDBに書き込むプログラムは動きません。
ではどうするかというと、「フォーム」を使ってサーバーにある「更新を担当するプログラム」対してデータを送信し、保存してもらいます。

(0)ユーザーが「view.html」をリクエスト。 ↓ (1)view.htmlのサーバー側プログラムがHTMLを作成 ↓ (2)作成されたHTMLが利用者のブラウザに返され、画面に表示される(この時点でプログラムは動作終了) ↓ (3)ユーザーがテキストフィールド等に更新情報を入力し、「save.html」にデータを送信 ↓ (4)save.htmlのサーバープログラムが受け取ったデータをDBに書き込む。

まずは一度DBへの書き込みは置いておいて、フォームを使った別ページへのデータ送信から取り組みましょう。
それができたら次は送ったデータをDBに反映する、という風にステップアップしていけば良いかと思います。

投稿2016/09/26 05:42

KaedeKazane

総合スコア408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1行ずつデータを取り出して、ってのが引っ掛かりますが、SQLでテーブルをアップデートするには
データの更新
MySQL UPDATE構文
を参考に。
1行ずつデータを取り出す条件によっては別の方法があるかも?
SHOW CREATE TABLE構文
とUPDATEしたい内容を提示いただければ適切なコメントが付くかもしれません。

投稿2016/09/26 04:18

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MySqlをはじめとする(リレーショナル)データベースを操作するのに、SQLと呼ばれる言語を使います。

「SQL 入門」で検索かけてください。

まったく知識が無いようなので、ドットインストールあたりはいかがでしょうか?
入門の入門としてはおすすめできます。

http://dotinstall.com/lessons/basic_mysql_v2

投稿2016/09/26 03:05

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

iwamoto_takaaki

2016/09/26 08:41

データベースの話ではなかったのですね。回答の方向を外してしまった・・・
guest

0

index になる列を作ればいいんじゃないかな。

投稿2016/09/26 02:54

yskz44

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問