如何从多个表中获取详细信息?
问题描述:
在MySql数据库必须在如何从多个表中获取详细信息?
cId CourseName course_desc
101 java sometext...
102 mysql sometext....
:
AM_USER
AM_COURSE
表在
uid name
1001 Ram
1002 pavan
在
id uid cid
1 1001 101
2 1001 102
3 1002 101
AM_TIMETABLE
表AM_INTER
在
UserId Date_Time
101 2012-08-08 04:00:00
102 2012-08-15 10:00:00
103 2012-08-18 09:00:00
104 2012-08-24 05:00:00
我的问题是,我传递开始日期和结束日期和CourseName
然后我想得到这样用户id,名,coursename,course_desc那样我写查询
SELECT a.cid,a.course_desc,c.name
FROM
AM_COURSE a,AM_USER c INNER JOIN AM_TIMETABLE b ON a.S_ID = b.COURSE_ID WHERE
a.Name = 'java'
AND
b.Date_Time BETWEEN '2012-08-07 00:00:00' AND '2012-08-20 00:00:00'
但我的详细信息米得到错误please help
答
的INNER JOIN当存在两个表中的至少一个匹配的关键字返回行。
的MySQL INNER JOIN条款
MySQL的INNER JOIN子句匹配行的一个表与其他表中的行,并允许您来查询包含两个表中的列行。
MySQL INNER JOIN子句是SELECT语句的可选部分。它立即出现在FROM子句之后。
使用MySQL INNER JOIN条款之前,您必须指定以下标准:
首先,你必须指定出现在FROM子句中的主表。 其次,您需要指定要与INNER JOIN子句中出现的主表连接的表。从理论上讲,你可以加入一个有很多表格的表格。但是,为了获得更好的查询性能,您应该限制要加入的表的数量。第三,你需要指定连接条件或连接谓词。连接条件出现在INNER JOIN子句的关键字ON之后。连接条件是在主表和其他表之间匹配行的规则。
例
SELECT c.cid, c.course_desc, user.name FROM AM_COURSE c
INNER JOIN AM_INTER inter on inter.cid = c.cid
INNER JOIN AM_USER user on user.uid = inter.uid
INNER JOIN AM_TIMETABLE tt ON inter.cid = tt.UserId
WHERE c.Name = 'coursename' AND tt.Date_Time BETWEEN '2011-08-12' AND '2012-08-12'
答
尝试
SELECT course.cid, course.course_desc, user.name
FROM AM_COURSE course
INNER JOIN AM_INTER inter on inter.cid = course.cid
INNER JOIN AM_USER user on user.uid = inter.uid
INNER JOIN AM_TIMETABLE tt ON inter.cid = tt.UserId
WHERE course.Name = 'java'
AND tt.Date_Time BETWEEN '2012-08-07' AND '2012-08-20'