【发布时间】:2011-04-12 04:39:24
【问题描述】:
我有三个名为
的表**Student Table**
-------------
id name
-------------
1 ali
2 ahmed
3 john
4 king
**Course Table**
-------------
id name
-------------
1 physic
2 maths
3 computer
4 chemistry
**Bridge**
-------------
sid cid
-------------
1 1
1 2
1 3
1 4
2 1
2 2
3 3
3 4
4 1
4 2
现在显示学生姓名和他学习过的课程名称,
**Result**
---------------------------
Student Course
---------------------------
ahmed physic
ahmed maths
ahmed computer
ahmed chemistry
ali physic
ali maths
john computer
john chemistry
king physic
king maths
我构建以下查询
select s.name as Student, c.name as Course from student s, course c join bridge b on c.id = b.cid order by s.name
但它没有返回所需的结果...
如果我想找出谁是经理而不是其他人,那么规范化的形式是什么:
**employee**
-------------------
id name
-------------------
1 ali
2 king
3 mak
4 sam
5 jon
**manage**
--------------
mid eid
--------------
1 2
1 3
3 4
4 5
并且想要得到这个结果:
**result**
--------------------
Manager Staff
--------------------
ali king
ali mak
mak sam
sam jon
【问题讨论】:
-
在第一个结果中,您错误地为 ahmed 和 ali 设置了数据
-
我们有 4 个表:姓名、地址、电子邮件、电话 SELECT A.personID, B.address, C.emailID, D.mobnumber FROM name AS A INNER JOIN address AS B ON A.personID = B.personID INNER JOIN email AS C ON A.personID = C.personID INNER JOIN phone AS D ON A.personID = D.personID 这是假设 personID 存在于所有表中。此查询将显示人员 ID、地址、电子邮件、电话号码,其中人员 ID 在所有表中都相同,因为它是内部联接。希望这会有所帮助:)
标签: mysql