No.3
- 回答日時:
それぞれ一長一短がありますが、私は前者の方法で使っています。
前者の長所は、レコード数が少ない事と、修正がラクチンな事です。
ユーザがのちのちに変更しても、同じレコード内にあるデータを書き換えるだけですからね。
短所は、Indexが効かない事ですね。fulltextでも日本語はダメなので。
それと、サッカーが例えばテニスに変更した場合には修正がめっちゃくちゃ面倒な事になりますね。
後者の一長一短は前者のまるっきり反対になると思います。
後者の長所は、Indexが使える事です。ユーザID等のユニークなIDを英数字で紐付けすれば
Indexが使えます。
短所は、レコード数がむちゃくちゃ増える事ですね。
1ユーザが3項目選択するとそのまま3レコード増える事になります。
そのぶん、直接DBを管理する時に非常に乱雑になると思います。
ユーザが修正かけてもいちいち全レコードからユーザIDで抽出し、1レコードずつ修正しなくては
いけません。
そのかわり、前者の例のように、まとめて変更する時は楽です。
という事から、ユーザ情報のDBだとすると、将来、どれくらい
ユーザが増えるかによって、決めた方がいいと思います。
ちなみに、前者の場合で、例えばサッカー好きの人だけ検索するには、
jyangule_pさんの例題だと検索できないので、区切記号を『/』にしています。
実際にDBに書き込む内容は、
1 | '/サッカー/野球/バスケ/'
となります。
こうすると、後でサッカー好きの人だけ集めたければSQL文で
where column_name like '%/サッカー/%'
という具合に検索かけられます。
No.4
- 回答日時:
がると申します。
基本的には後者がよろしかろうかと。検索その他を考えて、前者のメリットはないに等しいので。
ただ、レコード数制限などの観点から後者がチョイスできない場合に前者のような持ち方をしないわけではないです…が、レコード数が溢れたらもうちょっと抜本的に色々対策を練りますねぇ(苦笑
といった思考過程から、私は後者に一票を投じます。
この回答への補足
がる様
有難う御座いました。
やはり、後者のようですが、
後者の場合気になったのが、SQL文の組み立てですが、
データを取り出すして、
hoby[0]['サッカー'],hoby[1]['野球'],hoby[2]['バスケ']
としたい場合には、どうすればよろしいでしょうか、
よろしくお願いいたします。
No.5
- 回答日時:
がるです。
> データを取り出すして、
> hoby[0]['サッカー'],hoby[1]['野球'],hoby[2]['バスケ']
> としたい場合には、どうすればよろしいでしょうか、
二つほど質問なのですが。
順番は厳密に管理されるべきでしょうか? それとも順不同でもOKでしょうか?
あと、拝見していると配列のキーに情報が入っているのですが、これはこのように持ちたいものなのでしょうか?
# 通例、例えば「hoby[0]='サッカー',hoby[1]='野球',hoby[2]='バスケ'」若しくは「hoby['サッカー'],hoby['野球'],hoby['バスケ']」という風に持つケースが多いと思うので。
順不同であれば単純に
SELECT hoby FROM テーブル名 WHERE user_id='1';
で。
もし順番が管理されるべきなのであれば、それようにもう1フィールド突っ込んでおいて(例えばsort_noなど)、
SELECT hoby, sort_no FROM テーブル名 WHERE user_id='1' ORDER BY sort_no;
という風になさるとよろしいかと思います。
で、データを並べ替えたら、後はプログラム側で好きな形の配列にいれるとよろしいかと思います。
この回答への補足
がる様
有難う御座いました。
すいません、言葉が足りませんでした、
配列の順番は、今のところ考慮しておりませんが、
下記のように、user_tbとhobo_tbを結合した時の
SQL文が、いま一つ良く分からないもので、
すいませんが、よろしくお願いいたします。
user_tb
user_id name
1 AAAA
hoby_tb
user_id hoby
1 サッカー
1 野球
1 バスケ
ユーザーid1の結合結果
user_id name hoby[] hoby[] hoby[]
1 AAAA サッカー 野球 バスケ
No.7ベストアンサー
- 回答日時:
> user_tb
> user_id name
> 1 AAAA
> hoby_tb
> user_id hoby
> 1 サッカー
> 1 野球
> 1 バスケ
> ユーザーid1の結合結果
> user_id name hoby[] hoby[] hoby[]
> 1 AAAA サッカー 野球 バスケ
まず、hoby_tbの主キーを
・user_id
・seq_no …連番ね
に変更する必要がありますね。
その上で。一発で取ってこれるかどうかは、テーブル仕様に拠ります。
仮に hoby_tb.seq_no が最大 5 というようにしているなら、下記のようなSELECT文になるんじゃないかな?
SELECT F1.user_id, F1.name
, ( SELECT hoby FROM hoby_tb WHERE seq_no = 1 AND user_id = F1.user_id ) AS hoby1
, ( SELECT hoby FROM hoby_tb WHERE seq_no = 2 AND user_id = F1.user_id ) AS hoby2
, ( SELECT hoby FROM hoby_tb WHERE seq_no = 3 AND user_id = F1.user_id ) AS hoby3
, ( SELECT hoby FROM hoby_tb WHERE seq_no = 4 AND user_id = F1.user_id ) AS hoby4
, ( SELECT hoby FROM hoby_tb WHERE seq_no = 5 AND user_id = F1.user_id ) AS hoby5
FROM user_tb F1
ORDER BY F1.user_tb
仮に hoby_tb.seq_no の最大数は不確定だ、というなら、SELECT文の発行を2回に分けたりする必要があるんではないかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
データベースの1要素に複数データを格納したい
その他(データベース)
-
チェックボックスの項目をDBにinsertしたい
MySQL
-
外部キーだけのテーブル(主キーがない?)
その他(データベース)
-
-
4
チェックボックスを使った複数選択からデータベースへの登録
PHP
-
5
外部参照してるキーを主キーにすることは可能?
その他(データベース)
-
6
チェックボックス複数選択 mysql受け渡し
PHP
-
7
DBの値をチェックボックスに反映させたい
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
副問合せの書き方について
-
sqlで、600行あるテーブルを100...
-
書籍の内容はまともでしょうか?
-
SQLサーバから、項目の属性(型...
-
阪急三番街 ATM(ゆうちょ)は...
-
【MySQL】本当に困っているので...
-
DataTableで重複行を削除したい
-
SQL Left Join で重複を排除す...
-
Unionした最後にGROUP BYを追加...
-
1対多結合で多を絞り込み条件と...
-
php+mysqlで複数選択削除について
-
PL/SQLの変数について
-
[MySQL] UNIQUE制約の値を更新...
-
LAST_INSERT_IDで同時にアクセ...
-
Access パラメータクエリをcsv...
-
画像とカテゴリーを出力したい...
-
マイクラPC版のコマンドで効率...
-
Mysql でレコードを追加した時...
-
VMwareがCDドライブを認識する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
センノシド異性体構造式
-
Unionした最後にGROUP BYを追加...
-
insertを高速化させたい
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
sqlで、600行あるテーブルを100...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
URL と行番号の指定
-
複数テーブルのGROUP BY の使い...
-
PL/SQLの変数について
おすすめ情報