关于外键有很多解释,但是没有一个可以解释,或者我很难理解它。
我用this tutorial花了大约一个小时,但示例表和其他表的项目在那里有SAME名称。所以示例代码没用,让我感到困惑。
这是我的问题。我有两个包含这些行的表:
主表 songs_tbl
id
region_id
region_tbl
regionId
region_txt
我可以使用MS Access轻松地在 region_id 字段中显示区域的文本。我怎么能在MySQL中这样做?我怎样才能创建内部或左侧连接?
编辑:我想创建一个组合框,其中包含region_tbl中region_txt的值。这可能吗?我正在使用EMS Manager for MySQL。
这是我需要组合框的屏幕截图:
答案 0 :(得分:1)
id |名字|当然
----- | ---------------- | -------------------
1 |爱丽丝| 1
2 |鲍勃| 1
3 |卡罗琳| 2
4 |大卫| 5
5 |艾玛| (NULL)
id |名称
----- | ----------------
1 | HTML5
2 | CSS3
3 | JavaScript的
4 | PHP
5 | MySQL的
SELECT user.name, course.name FROM `user` LEFT JOIN `course` on user.course = course.id;
猜猜这是你在谈论哪些结果的例子;
user.name | course.name
--------------- | ----------------
爱丽丝| HTML5
鲍勃| HTML5
Carline | CSS3
大卫| MySQL的
艾玛| (NULL)
正如你所说的那样令人困惑的是两张桌子都有相同的标题。
所以让我们改变这个例子如下;
user_id | user_name | user_course_id
------------ | ------------------------ | ------------ -------
1 |爱丽丝| 1
2 |鲍勃| 1
3 |卡罗琳| 2
4 |大卫| 5
5 |艾玛| (NULL)
course_id | course_name
--------------- | ----------------
1 | HTML5
2 | CSS3
3 | JavaScript的
4 | PHP
5 | MySQL的
然后查询将更改为
SELECT user.user_name, course.course_name FROM user LEFT JOIN course on user.user_course_id = course.course_id;
这会给你结果;
user.user_name | course.course_name
----------------------- | ----------------
爱丽丝| HTML5
鲍勃| HTML5
Carline | CSS3
大卫| MySQL的
艾玛| (NULL)
如果要为结果表的列命名,请将查询更改为;
SELECT user.user_name AS new_user_name, course.course_name AS new_course_name FROM user LEFT JOIN course on user.user_course_id = course.course_id;
结果将改为;
new_user_name | new_course_name
----------------------- | ----------------
爱丽丝| HTML5
鲍勃| HTML5
Carline | CSS3
大卫| MySQL的
艾玛| (NULL)
答案 1 :(得分:0)
以下选择应该执行您要归档的内容。
SELECT region_tbl.region_txt
FROM `region_tbl`
INNER JOIN `songs_tbl` ON region_tbl.regionId = songs_tbl.region_id
WHERE songs_tbl.id =5;
翻译:
请列出
region_txt
的所有region_tbl
值列表 使用songs_tbl
查找相应的regionId
表songs_tbl
id为5"