
質問です
LINUX,PHP4,MySQL3の環境です。
用意したテーブル
個人情報テーブル
→ID
→名前
地域情報テーブル
→ID
→名前
個人+地域情報関連付けテーブル
→ID
→個人TableID
→地域TableID
というDBを設計しました
問題は個人情報と地域情報を関連付けるテーブルへとデータを入力するフォームなのですが
ブラウザ上で、登録された(別途地域登録フォームなどより)地域を地域情報テーブルより引き出し表示させ
その中から選択された地域より今度は個人情報を引き出し表示させ
関連付けされたテーブルへと登録するような流れです
この時、フォームのCheckboxで複数の個人情報を選択できる形のフォームを作成しました
選択できるCheckboxはは個人情報テーブルより個人情報をループ処理によって出力しています
この時、既に個人+地域情報関連付けテーブルへ登録されている個人情報+地域情報をチェックボックスのループ処理に反映されないようにしたいのですが
どのような方法がありますでしょうか?
色々なSELECT文を試してループ処理をさせていたのですがなかなかうまくいきません。
具体的には、結局全種類もしくは同じ個人情報が複数個ループされたりします・・・
ループ処理はSELECT文から関連付けテーブル>各情報テーブルと3つのテーブルから引用して必要なIDと名前を条件付で選びました
条件はいろいろなものを試したのですがどれもうまくいきません
ループ処理でのPHP部分も含めて可能な方法を教えてもらいたいです
よろしくおねがいします!
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
処理概要の件は了解しました。
/*** MySQL テーブル定義 ***/
1.個人+地域情報関連付けテーブルは不要と思います。
2.個人情報テーブルのレイアウト変更
→個人ID ---(主キー)
→個人名
→地域ID
3.地域情報テーブルのレイアウト現状のまま
→地域ID ---(主キー)
→地域名
/*** PHP コーディング ***/
1.地域情報テーブル を全件読み込む。
SELECT * FROM 地域情報;
2.地域と関連付けされていない個人情報テーブルを全件読み込む。
SELECT * FROM 個人情報 WHERE 地域ID = '';
3.選択された地域をチェックされている個人分関連付ける。
UPDATE 個人情報 SET 地域ID = 選択された地域ID WHERE 個人ID IN ('...','...');
この回答への補足
回答ありがとうございます。
テーブルのレイアウトを変更する方法も考えたのですが
一つの個人情報に複数の地域が入る可能性があるので
正規化の観点から別々のテーブルへと設計しました
PHPの処理で既に登録されているかどうかを判断する事はできたので、表示しない事もできるのですが、できればSQL一つでやりたいなーというのが本音です
JOINっていまいち使いづらいですね・・・
No.1
- 回答日時:
まずは、入力画面で行うの処理概要を確認させてください。
別途機能で事前データ登録されている
2つのマスタテーブル(個人情報、地域情報)を参照し
地域情報との関連付けが無い個人分に対して地域情報
との関連付けを行う。
ということでいいですか?
この回答への補足
返信ありがとうございます
説明不足で申し訳ありません
処理に関してはその通りです。
相変わらずMySQL3での解決策は見当たりませんが、サブクエリが必要そうだなと感じてきました
もしくはPHPでの制御でしょうか・・・
何か良い方法があればご指南願います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
デットロック回避策(autocommit...
-
「テーブルに座って……」という...
-
まるいテーブル 円い 丸い 漢字...
-
SQL*LoaderでCSVから指定した列...
-
下記、問題に対しての解答が以...
-
sqlplusで表示が変なので、出力...
-
MACアドレス見えない
-
処理の途中で停止させ、再開さ...
-
Microsoft Access:クエリのフ...
-
C#で電卓のプログラムを組んで...
-
ACCESSで成績管理
-
update文で改行を入れる
-
「クリップボードにコピーされ...
-
AUTO_INCREMENTの抜け番
-
クリスタルレポートで検索条件...
-
重複クエリを使ったデータ削除
-
男性と2人で飲食店に行きテーブ...
-
お金持ちのテーブル
-
SQL Server management studio ...
-
アクセス2010について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
SQLにて指定日付より前、かつ最...
-
SQLでUPSERTを一度に複数行やる...
-
PostgreSQLの断片化の状況を確...
-
単純なselectが遅くなるのです...
-
MS Access から PostgreSQL へ...
-
javaでデータベース上のテーブ...
-
2つのテーブルで引き算 postgres
-
Postgresqlのレポート機能について
-
reindex と update のデッドロック
-
Postgresのデータ領域の拡張に...
-
デットロック回避策(autocommit...
-
テーブルにcsvファイルをインポ...
-
PostgreSQL 8.0.2 の ERROR: r...
-
PostgreSQL レコードからアイテ...
-
同一カラムに複数条件指定
-
備品管理のデータベースについて
-
PostgresSQLでテーブル定義の抽...
-
DISTINCTとGROUP BYの違い
おすすめ情報