2012-05-23 2 views
0

Я представляю вывод данных из MySQL на своем веб-сайте в зависимости от того, в какой город они принадлежат. Итак, две мои таблицы называются login_users и city_selection. Все таблицы имеют столбец city_id.Таблица MySQL. Должен ли я использовать таблицу перекрестных ссылок?

Когда пользователь в на мой сайт, я задаю базу данных, что CITY_ID установлен, а затем создать $_SESSION['city_id']

Тогда я могу написать мой MySQL-querys с WHERE -clause к $_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, так что несите меня!

ответ

0

Если каждый город принадлежит к одному региону, вы можете создать таблицу 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 
+0

Да, который работает. Но как я должен обрабатывать сценарий, когда пользователь «принадлежит» нескольким регионам? – David

+0

Я отредактировал свой ответ, чтобы включить ваше предложение. Надеюсь, это то, что вы имеете в виду. – Config

+0

Спасибо. Интересно, однако, если есть возможность использовать таблицу перекрестных ссылок, чтобы связать сначала login_user с одним или несколькими регионами, тогда регион будет связан с городами. В противном случае мне нужно создать student_region, customer_region, course_region и т. Д., И это не очень красивая структура. – David

Смежные вопросы