簡體   English   中英

MySQL表。 我應該使用交叉引用表嗎?

[英]MySQL table. Should I use a cross-reference table?

我正在根據網站所屬城市顯示MySQL的數據輸出。 因此,我的兩個表稱為login_userscity_selection 所有表都有一個名為city_id的列。

當用戶登錄我的網站時,我問數據庫設置了什么city_id,然后創建一個$_SESSION['city_id']

然后,我可以將帶有WHERE 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']}'

這可行,但是現在我需要一些用戶來顯示一個或多個城市區域。 我的第一個想法是創建一個名為region_selection的新表,並從表city_selection表中添加一個外鍵。 但是,我應該如何處理應該向登錄用戶顯示來自一個或多個區域的數據輸出的情況? 我應該創建某種交叉引用表嗎?

這是我第一次使用PHP-MySQL網站,請耐心等待!

如果每個城市僅屬於一個地區,則可以使用region_id | region_name column列創建您的region_selectionregion_id | region_name 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_id | region_id的表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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM