【先着1,000名様!】1,000円分をプレゼント!

顧客管理データベースシステムを作成しようとしているのですが、
データベースの要素に複数データが入る場合の管理方法が
分からず困っています。

一例を挙げると、複数の電話番号を持つ人にも対応するように
データベース設計をしようとした場合、どのようにするのが
ベストなのかが分かりません。

電話番号1,電話番号2といったような要素を用意して、
データベースを検索するときには両方を参照する以外に
手は無いのでしょうか?

それとも顧客番号と複数電話番号検索用IDのようなものを対応させ、
電話番号データベース(電話番号ID、電話番号1、電話番号2、電話番号3)
のようなものを用意することで調べるのでしょうか?

正直、どちらもデータベース要素が3つ以上の場合に融通が利かなかったり
まだるっこしい感じがしたりするのですが、代替手段を良く知りません。
何か良い方法ございましたら、ご教示願えませんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (7件)

正規化して、電話番号を別テーブルに持つか、


顧客マスターに、電話1、電話2、電話3・・・と複数フィールドを持たせるか、
それぞれメリットとデメリットがあるので、
使い方次第でどちらでもいいかと思います。

固定、FAX、携帯、だけでなく、部署別とかで、多数ある可能性があるのなら、
別テーブルにした方がいいでしょう。

設計例

[顧客ID][表示順][電話番号][種別]
1111__1___012-111-1111 固定
1111__2___012-111-2222 FAX
1111__3___012-111-3333 携帯

顧客ID と 表示順 で複数フィールド主キーに設定

柔軟性が高いです。電話番号がどれだけ増えても対応できます。
joinしたものを対象に検索すれば、インデックスを使って高速に処理できます。


最大3つとか5つまでとか限定できるなら顧客マスターに全部入れてもいいでしょう。
ANo.4 で提案されている検索用のフィールドを作成するのもなかなかいいアイデアですが、デー多数が多いとインデックスが利用できないので重くなる可能性があります。
その場合は、面倒ですが、Orで連結した条件式を用意すればいいでしょう。

[電話1]=[検索番号] Or [電話2]=[検索番号] Or [電話3]=[検索番号]
    • good
    • 2
この回答へのお礼

表示順と種別を設定するのは、柔軟性の意味で非常に良いですね。
柔軟性を高めるという意味では、システムの複雑化は避けえない
問題みたいですね。

SQL文で書くと、
select 顧客番号,etc… from 顧客データベース
full join 電話データベース on
顧客データベース.顧客番号 = 電話データベース.顧客番号
WHERE 電話1=検索番号 OR 電話番号2 = 検索番号…
といった感じでしょうか。

いずれにせよ、電話番号の数は予め設定することは不可欠みたいですね。
電話であればまだ決め打ちで数を決めても良いですが、
好きな映画など項目数が分からない場合の検索はどうなるんでしょう?

なんとなく答えは単純なような気配がものすごくしますが、
混同してしまっているので教えていただけると助かります。

お礼日時:2010/12/21 21:05

> SQL文で書くと、


> select 顧客番号,etc… from 顧客データベース
> full join 電話データベース on
> 顧客データベース.顧客番号 = 電話データベース.顧客番号
> WHERE 電話1=検索番号 OR 電話番号2 = 検索番号…
> といった感じでしょうか。

顧客マスタと電話番号テーブルと分割した場合(正規化)と、顧客マスターに電話番号を入れた場合と、ゴッチャにしてますね。

正規化した場合は、

電話番号テーブルは、1レコード1電話番号になりますので、

SELECT 顧客マスタ.*
FROM
顧客マスタ LEFT JOIN 電話番号テーブル
ON 顧客マスタ.顧客番号 = 電話番号テーブル.顧客番号
WHERE
電話番号 = [検索番号]

です。

顧客マスターに電話番号を入れた場合は、

SELECT 顧客マスタ.*
FROM
顧客マスタ
WHERE
電話1 = [検索番号] OR 電話2 = [検索番号] OR 電話3 = [検索番号]

ということです。
    • good
    • 0

>1フィールドが可変個の電話番号を持つような


>イメージで管理・・・というのが理想

決め打ちでフィールドを用意しても、1電話番号を1レコードとしてテーブルでも
どちらでも管理できそうな話ですが、
何がいいかというのは、
検索で見つかった電話情報をどう使うかにもよります。
検索で見つけやすくなった、のその先の話です。

一般的に見ても1管理単位=10個の電話番号も行かないのでは?。
何個発生するかわからないほどのデータ管理にならないのでは?。

仮に、
1フィールド200バイトに連結文字として確保して
必要に応じて10バイト区切りにすると可変管理になります。
格納バイト長/10=何個格納しているか、です。
そこに50バイトあれば5つ分、70バイトあれば7つ分が
入力されていることになります。
1フィールドなら当然検索も楽です。
もう1つ「何個あります」のフィールドを用意してもいいでしょう。
    • good
    • 2

検索で困っている、ということでしたら


テーブルを増やすのでなくて、項目1つ「検索電話」準備するのみ。

電話1、電話2、電話3・・・・・

電話1、電話2、電話3・・・・・、検索電話
電話xは5つくらいあれば十分では?。

「検索電話」には、
「電話1」「電話2」「電話3」・・の連結文字列、
電話1=1111111111
電話2=2222222222
電話3=3333333333
なら
検索電話=#1111111111#2222222222#3333333333#xxxxxxxxxx#xxxxxxxxxx#・・・

検索電話の1項目だけで検索できますし顧客を特定できます。
電話1が変わっても検索電話の値更新は楽ですし、
市外局番だけでも検索はできます。
電話無、電話1しかない、電話5つある、でも対応です。
「#」は使われない文字を使う。仮の区切り文字。

とある1顧客で管理したい電話、またその検索の仕方、
とある1電話で管理したい顧客、またその検索の仕方、
1:1なのか1:nなのかn:nなのか、
こういうこと考えていけば、構造が見えてくるのではないでしょうか。


テーブルA
顧客あ、電話1=1111111111、電話2=2222222222、・・・・

テーブルB
顧客あ、電話1=1111111111
顧客あ、電話2=2222222222
顧客あ、・・・・
とするのも面倒です。

例えば、同じ系列の顧客で電話番号が同じで良い、となった場合、
顧客あ、電話1=1111111111
顧客あ、電話2=2222222222
顧客あ、・・・・
顧客い、電話1=1111111111
電話を検索して複数顧客が結果に出るようだと単票フォームでは表示面倒です。
単なる情報として持っていたいだけなら電話番号テーブルを作るほどではないのでは?。
管理が面倒になるだけなので、
別テーブルでJOINしたりさせなくてもいいと思います。
    • good
    • 0
この回答へのお礼

検索番号の発想はありませんでした。
検索しやすくなりそうですね。

唯一の難点は電話番号の数を決め打ちで
フィールドを作成する所でしょうか?

顧客の所持する電話番号の数に応じて
1フィールドが可変個の電話番号を持つ
ようなイメージで管理・・・というのが
理想なのですが、私自身そんな管理方法を
聞いたことがありませんし、
やっぱり存在しないのでしょうか?

お礼日時:2010/12/21 20:45

ま、電話番号の2つや3つくらいなら、顧客マスタの中に


顧客ID、顧客名称、....,電話番号1、電話番号2、電話番号3とかすればいいのです。
くだらんことで妙なJOINとかしてややこしいことになるより簡単です。
電話番号を外だしにするなら、顧客ID、補助電話番号、優先番号とかするしかないですけど。
そんなことするより顧客を複数登録する方が簡単です。
お客様1代表
お客様1直通
とか

この回答への補足

システム設計上ではおっしゃる通りにするのが
恐らく楽そうですが、顧客を複数登録した場合
片方の顧客だけ情報を更新してしまうなど、
更新異常が起こることが懸念されるので
抵抗があります。

補足日時:2010/12/21 20:37
    • good
    • 1

データベース テーブルの正規化ですね。



電話番号のみの登録テーブルを作ります。
 [オートナンバー] [顧客ID][電話番号][主に使用フラグ]

といったレコード設計でどうでしょうか?

顧客のテーブルの[顧客ID]などで、顧客と電話番号のグループの関連づけをします。

※ [オートナンバー] は、重複レコードを防ぐ識別番号なので、
電話番号自体がユニークになるのであれば、必要ないかもしれません。
(ただ、登録順序を明確にすることができます。)

※ また、[主に使用フラグ]は、[優先順序]のフィールドに変えて通常使用する
電話番号を管理しても良いかもしれません。

※ その他として、電話/携帯電話/FAXなどを区別するフィールドがあると便利です。

参考になりましたでしょうか?
    • good
    • 0
この回答へのお礼

確かに、携帯のアドレス登録みたいに
通常利用する電話番号フラグはあっても良いかもしれませんね。
状況に合わせたフィールドも参考になります。

お礼日時:2010/12/21 20:33

そもそも複数の電話番号を登録しないと行けない状態が判りませんが・・・


代表回線登録しとくだけじゃ駄目なんでしょうかね?
通常、固定電話と携帯電話の2つあれば十分な気がしますが。

複数の電話番号を管理したいのなら、顧客IDと電話番号を1:nで紐づければ良い訳ですから、顧客IDと電話番号をキーにしたテーブル作って、顧客情報テーブルとjoinして引っ張ってくれば良いのでは?

この回答への補足

顧客テーブルとjoinするやり方は
データベース更新等が煩雑になりそうなので、
ちょっと倦厭しておりました。

同じ部署の場合、違う顧客が同じ電話番号となるケースもあるので、
必ずしも電話番号と顧客がn:1の関係にならないのも悩み所です。

補足日時:2010/12/21 20:30
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q一つのフィールドに複数の情報を持たせたいです。

データベースに詳しい方!一つのフィールドに複数の情報を持たせたいです。

例えば複数のユーザを管理するテーブルにあるID(フィールド)を
複数個をデータベースに保存する場合どうすればいいのでしょうか?
言語はJavaで、データベースはMySQLを使っています。

↓↓各フィールド(例)
--------------------------
|| userName || userID || ○○ID ||
--------------------------


上記の 「○○ID」というフィールド に複数の値を持たせたいのです。

String型の配列、もしくはXMLをMySQLの一つのフィールドに保存する
事はできるのでしょうか?
(もし出来るのならこちらを採用したいです)


それとも○○IDに関連するテーブルを作成する(?)

それか最悪の場合、ユーザが増えるたびにテーブルを一つ作成
して管理するか・・・・(避けたいです)



宜しくお願いします。

Aベストアンサー

「データベースに詳しい方!一つのフィールドに複数の情報を持たせたいです。」
 その複数の情報を1つの文字列で表現することは、技術的には可能です。例えば、出生地と現住所の都道府県名を1つに入れるには、そのまま文字列で「千葉県東京都」と入れても良いし、コード化して、「0147」などとすることも考えられます。

「上記の 「○○ID」というフィールド に複数の値を持たせたいのです。」
 1つのフィールドに、複数の情報を入れては、情報を取り出しにくいだけで、データベース化する意味がありません。まずは、「データベースの正規化」と言う概念を理解する必要があります。↓
http://www.kogures.com/hitoshi/webtext/db-seikika/index.html
http://jibun.atmarkit.co.jp/lskill01/rensai/db/07/01.html

Qカンマ区切りで格納するカラムって設計上ありでしょうか?

例えば、1,2,5,8,9,10
というような形でデータを格納するカラムをテーブルに作ろうと思っているのですが設計上ありでしょうか?
格納したあとは、それSELECTのIN(1,2,5,8,9,10)で
使用するのが主で、更新時のキーが別にあればOKという感じでしょうか?
こういう場合に、このような設計をした事があるよ。いった例など教えていただけると幸いです。

Aベストアンサー

「設計上あり」とは、CSV入出力を考慮しての事でしょうか?

データベースソフトでは、テキスト入出力をする場合に区切り文字をデフォルトの「,」以外にもタブとか任意の文字に設定できることが多いので、その意味では「あり」です。Mysql、firebird、ACCESS、桐いずれもOKです。

あと「更新時のキーが別に云々」のところもよく意味がわからないのですが...

学術的意味合いで「データベースとはかくあるべき」というのがあるのかどうかは知りませんが。

Qデータベースに配列を格納する

私はデータベースを本で勉強していたのですが物にするため、実際にデータベースのプログラムをくんでみようと設計を考えたのですが、疑問があります。
私はデータベースに、プログラム上で取り扱っているサイズがことなる複数の配列内のデータを格納したいのですが、これはデータベースにどのように格納すればよいのか分からず困っています。
図で説明すると
例えば
{1}
{12 33 24 21}
{13 56 0 1}
という3つの配列を同じデータベースに入れようとした場合
ID int1 int2 int3 int4
1 1 null null null
2 12 33 24 21
3 13 56 0 1
という形で入れる事になると思いますが、ここにサイズが5の配列をいれようとした場合は列が増えることになってしまいます。すると色々めんどくさいことになるのではないかと思います。

このようなデータベースに入れるデータのサイズが分からない場合は、どのようにするべきなのでしょうか?(なおJDBCを使い、SQLiteに入れています)
やや抽象的かつ、意味がわかりにくい質問ですが不足な点は説明させていただきますので、ご回答よろしくお願いします。

私はデータベースを本で勉強していたのですが物にするため、実際にデータベースのプログラムをくんでみようと設計を考えたのですが、疑問があります。
私はデータベースに、プログラム上で取り扱っているサイズがことなる複数の配列内のデータを格納したいのですが、これはデータベースにどのように格納すればよいのか分からず困っています。
図で説明すると
例えば
{1}
{12 33 24 21}
{13 56 0 1}
という3つの配列を同じデータベースに入れようとした場合
ID int1 int2 int3 int4
1 1 null null nul...続きを読む

Aベストアンサー

データベースは、規則性をもったデータを格納し、またあとでデータを取り出して利用することが目的です。

なので、ご質問の配列に、どういう規則性があるのか または、 それを後で、どのように利用することを考えているのか
がないと、意味がないように感じます。
単に、サイズが異なる配列を収めるということなら、
id data
1 1
2 12 33 24 21
3 13 56 0 1
としても良いように思えます。dataの部分は、区切り文字をスペースなりカンマにするなりして、後でデータを取り出して
プログラム側で分割もありではないでしょうか?

データベースを学んでいるとあるのですが、正規化という考えからすると、ID int1 int2 int3 int4 という考えはないと思います。

Q可変個数のデータはどう納める?

データベースについてほとんど知識のない者です。

「本の索引を兼ねた用語事典」を作るとします。
項目にある「何ページに記載」の情報は、
ある項目では1箇所だったり、ある項目では数百箇所だったりします。
このような可変個数のデータを収めるには、
どういう方法があるでしょうか?

コード化して、可変長文字列形式でデータベースに入れれば
実現できると思いますが、それもみっともない気がします。
また、そうすると「特定のページから記載項目を取り出す」
ことも難しくなります。

考えてみれば、レンタルビデオや電話会社の利用経歴など、
可変個数のデータを記録する処理は多くの場所で行われています。
そういう場合一般的にはどうしているのでしょうか?
あるいは、これらの処理はリレーショナルデータベースには
向いていないのでしょうか?

非常に初歩的な質問だと思うのですが、ご教示をお願いします。
また根本的な勘違いがあったらご指摘下さい。

Aベストアンサー

マスタテーブルと明細テーブルに分割すればよいかと。

たとえば、以下のような項目名と関連するページのデータ
があった場合を想定します。

上野, 2, 4, 100, 502
秋葉原, 5, 52
東京, 1, 10, 77, 304, 1000, 1020



このように項目によって、データの個数が変化している場合、
可変長項目が設定可能なオフコン系のRDBを除きますが、
テーブルを分割し、共通のコードでリンクするようにします。
以下に、その例を記述します。

<索引マスタ>
1.索引コード 文字型
2.索引名   文字型

<索引明細>
1.索引コード 文字型
2.明細番号  数値型
3.格納ページ 数値型


※データの格納状況

<索引マスタ>
0001, 上野
0002, 秋葉原
0003, 東京

<索引明細>
0001, 2
0001, 4
0001, 100
0001, 502
0002, 5
0002, 52
0003, 1
0003, 10
0003, 77
0003, 304
0003, 1000
0003, 1020


この二つのテーブルを、Select文で結合して取り出すことで、
目的のデータを抽出することができます。

マスタテーブルと明細テーブルに分割すればよいかと。

たとえば、以下のような項目名と関連するページのデータ
があった場合を想定します。

上野, 2, 4, 100, 502
秋葉原, 5, 52
東京, 1, 10, 77, 304, 1000, 1020



このように項目によって、データの個数が変化している場合、
可変長項目が設定可能なオフコン系のRDBを除きますが、
テーブルを分割し、共通のコードでリンクするようにします。
以下に、その例を記述します。

<索引マスタ>
1.索引コード 文字型
2.索引名   ...続きを読む

Qチェックボックスを使った複数選択からデータベースへの登録

チェックボックスを使った複数選択の処理を教えて下さい。

現在の処理は下記のようにしております。

00.phpの中のチェックボックスの記述です。複数選択してから01.phpに値を渡します。

<label>
<input type="checkbox" name="working_days1" value="ド短期1日~OK">
ド短期1日~OK</label>
<label>
<input type="checkbox" name="working_days2" value="週2、3日程度">
週2、3日程度</label>
<label>    
<input type="checkbox" name="working_days3" value="月~金曜日">
月~金曜日</label>
<br>
<label>
<input type="checkbox" name="working_days4" value="土日祝日のみ">
土日祝日のみ</label>
<label>
<input type="checkbox" name="working_days5" value="毎日オールフリー">
毎日オールフリー</label>


00.phpから01.phpへPOSTでデータを渡します。

<?
$working_days1 = htmlspecialchars($_POST["working_days1"]);
$working_days2 = htmlspecialchars($_POST["working_days2"]);
$working_days3 = htmlspecialchars($_POST["working_days3"]);
$working_days4 = htmlspecialchars($_POST["working_days4"]);
$working_days5 = htmlspecialchars($_POST["working_days5"]);

各変数の中を確認してチェックするかどうかへ決め、変数に格納します。

if($working_days1 == "ド短期1日~OK" ){$d01 = "checked";}
if($working_days2 == "週2、3日程度"){$d02 = "checked";}
if($working_days3 == "月~金曜日"){$d03 = "checked";}
if($working_days4 == "土日祝日のみ" ){$d04 = "checked";}
if($working_days5 == "毎日オールフリー"){$d05 = "checked";}
?>

変数に格納されたチェックを実行してチェック済みとします。

<label>
<input type="checkbox" name="working_days1" value="ド短期1日~OK" <?php echo $d01 ?>>
ド短期1日~OK</label> 
<label>
<input type="checkbox" name="working_days2" value="週2、3日程度" <?php echo $d02 ?>>
週2、3日程度</label>
<label>    
<input type="checkbox" name="working_days3" value="月~金曜日" <?php echo $d03 ?>>
月~金曜日</label>
<label>
<input type="checkbox" name="working_days4" value="土日祝日のみ" <?php echo $d04 ?>>
土日祝日のみ</label>
<label>
<input type="checkbox" name="working_days5" value="毎日オールフリー" <?php echo $d05 ?>>
毎日オールフリー</label>

こんな感じでチェックされた項目の確認をした後で、内容をMYSQLのデータベースに登録をしたいのですが、
データベースへの登録も含めて、一連の流れの中で、配列を利用して、もっと簡単なよい方法が
ないか御指導いただけませんでしょうか?

データベースへの登録も配列に格納しないとworking_dayというテーブルしか用意をしていないので
その中にどのように格納して、また取り出しをすればよいかわかりません。

どうぞ超初心者レベルでのご指導をお手間ですが、よろしくお願い致します。

チェックボックスを使った複数選択の処理を教えて下さい。

現在の処理は下記のようにしております。

00.phpの中のチェックボックスの記述です。複数選択してから01.phpに値を渡します。

<label>
<input type="checkbox" name="working_days1" value="ド短期1日~OK">
ド短期1日~OK</label>
<label>
<input type="checkbox" name="working_days2" value="週2、3日程度">
週2、3日程度</label>
<label>    
...続きを読む

Aベストアンサー

>さてMySQLでの記述ですが、これはまだ試していないのですが、
>if(isset($_POST["working_days"][0]){
>foreach($_POST["working_days"] as $chkflg){
>$sql="insert into job(job_id, title, working_days)values
>('" . $_POST["job_id"] . "','" . $_POST["title"] . "','" . $_POST["working_days"] . "')";
>というように記述するのでOKなのでしょうか?

OKかどうかは分かりませんが、この場合の$chkflgはチェックボックスの中のチェックされたvalue値です。例えば0なら"ド短期1日~OK"に対応しますね。
データベースへの記録は文字列ではなく、整数のままで良いと言うならこのままでよいと思います(定型文字列であれば、対応数字をつくっておいてそのまま数字で記録の方が良い)。
なお、データベースへ登録する時そのまま$_POST値をSQL文に投入するとSQLインジェクションという脆弱性につながりますので、整形したりチェックする必要があります。
http://ja.wikipedia.org/wiki/SQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3

面倒でも、例えばMySQLならば
$title = mysql_real_escape_string($_POST["title"]);
のように整形する必要がありますね。ですから、例文であれば、
$sql="insert into job(job_id, title, working_days)values
('" . mysql_real_escape_string($_POST["job_id"] ). "','" . mysql_real_escape_string($_POST["title"]) . "','" . $chkflg. "')";

となります。

なお、別にチェックボクスの数字(value値)と文字列(ド短期1日~OKのような文字列)のテーブルを作っておけば、

create table checkbox_tb (
checkobx_id int(4),
checkbox_name varchar(32),
PRIMARY KEY (checkbox_id)
);
SQL取得時に表示名も一緒に取得する事が出来るので便利です。
SELECT job.*,checkbox_tb.checkbox_name FROM job,checkbox_tb WHERE checkbox_tb.checkbox_id = job.working_days AND 条件

参考まで。

>さてMySQLでの記述ですが、これはまだ試していないのですが、
>if(isset($_POST["working_days"][0]){
>foreach($_POST["working_days"] as $chkflg){
>$sql="insert into job(job_id, title, working_days)values
>('" . $_POST["job_id"] . "','" . $_POST["title"] . "','" . $_POST["working_days"] . "')";
>というように記述するのでOKなのでしょうか?

OKかどうかは分かりませんが、この場合の$chkflgはチェックボックスの中のチェックされたvalue値です。例えば0なら"ド短期1日~OK"に対応します...続きを読む

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Qテーブルの最後(最新)のレコードを抽出したい

宜しくお願いします。
PHP MYSQL の組み合わせで使っています

以下のようにして、最後のレコードを取り出したいのですが
まったく違う事をしているのかもしれません。

$sql =" select * from テーブル where フィールド='max' " ;

フィールドはauto_incrementで番号を振っています。
これで最大のつもりなのですが・・・。

他にも、レコードを入れた時間も記録したフィールドがあるのですが
どうしてよいか?判りません。

テーブルの最新のレコードを出したいのです。
**その中の一つのフィールドを取り出すのですが、
  それはうまくいっているみたいです 
  (max の所に数字を入れると表示します)

お手数かけますが、どなたかご教授お願いいたします。

Aベストアンサー

#2回答者です。

MySQL 4.1以前(サブクエリを使えない)なら、以下のような方法が考えられます。

select * from 表名
order by 列名 desc limit 1

Qテーブルに主キーを作らないデメリットは?

アクセスのテーブルを作るにおいて
主キーのフィールドを作らなかった場合、
どのようなデメリットや不都合がありますか?

既にいくつか主キーのないテーブルを作ってしまいました。
このまま運用しようか主キーを作るべきか悩んでいます。

SQLサーバーに移行する場合などにエラーになるのでしょうか?

Aベストアンサー

主キーがないとレコードを特定できません
この場合 ShowMeHow様の仰るようにユニークなフィールドを
設定しますと特段問題なさそうです。

自分はレコード抽出用のテンポラリーテーブルとして
積極的に主キーなしのテーブルも使用しています。

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

QInner join と Left joinの明確な違いは?

Inner join と Left joinの違いがよくわかりません。
教えてください。

Aベストアンサー

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3           ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング