0

MySQLからのデータ出力を、それらが属する都市に基づいてWebサイトに表示しています。したがって、私のテーブルの2つはとと呼ばlogin_userscity_selectionます。すべてのテーブルには、という列がありますcity_id

ユーザーが私のWebサイトにサインインすると、データベースにどのcity_idが設定されているかを尋ねてから、$_SESSION['city_id']

次に、WHERE-clauseを使用してMySQLクエリをに記述できます$_SESSION['city_id']

例えば:SELECT firstname, lastname, city_name FROM students JOIN city_selection ON city_selection.city_id = students.city_id WHERE city_selection.city_id = '{$_SESSION['city_id']}'

これは機能しますが、都市の1つ以上の地域を表示するために何人かのユーザーが必要になりました。私の最初の考えは、という新しいテーブルを作成region_selectionし、テーブルテーブルからこれに外部キーを追加することでしたcity_selection。しかし、サインインしたユーザーに1つ以上のリージョンからのデータ出力が表示されるシナリオをどのように処理すればよいでしょうか。ある種の相互参照テーブルを作成する必要がありますか?

これは私の初めてのPHP-MySQLWebサイトですので、ご容赦ください。

4

1 に答える 1

0

各都市が 1 つの地域のみに属している場合はregion_selection、列を含むテーブルを作成できますregion_id | region_name。次に、都市が属する地域を定義するregion_id列をテーブルに追加します。city_selection

次に、次のようなクエリを実行して、特定の地域に属する学生を取得できます。

SELECT firstname, lastname, city_name FROM students 
JOIN city_selection ON city_selection.city_id = students.city_id
JOIN region_selection ON region_selection.region_id = city_selection.region_id
WHERE region_selection.region_name = YOUR_REGION_NAME

ユーザーが複数の地域に属している場合は、次のようにすることができます:region_selection上記のようにテーブルを作成します。student_regions次に、列を含むテーブルを作成してstudent_id | region_id、学生と地域を関連付けます。

クエリは次のようになります。

SELECT firstname, lastname, city_name FROM students 
JOIN student_regions ON student_regions.student_id = students.student_id
JOIN region_selection ON region_selection.region_id = student_regions.region_id
WHERE region_selection.region_name = YOUR_REGION_NAME
于 2012-05-23T17:36:41.197 に答える