0

我根据他们所属的城市在我的网站上展示 MySQL 的数据输出。所以我的两个表被称为login_usersand city_selection。所有表都有一个名为 的列city_id

当用户登录我的网站时,我会询问数据库设置了什么 city_id,然后创建一个$_SESSION['city_id']

然后我可以用 - 子句将我的 MySQL 查询WHERE写入$_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']}'

这可行,但现在我需要一些用户来显示一个或多个城市区域。我的第一个想法是创建一个名为的新表并将表中region_selection的外键添加city_selection到此表中。但是,我将如何处理应该向已登录用户呈现来自一个或多个区域的数据输出的情况?我应该创建某种交叉引用表吗?

这是我的第一个 PHP - MySQL 网站,请多多包涵!

4

1 回答 1

0

如果每个城市只属于一个地区,您可以创建region_selection带有 columns的表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 回答