1

在 MySql 数据库中有AM_COURSE

cId      CourseName   course_desc
  101          java        sometext...
  102          mysql       sometext....
   :

AM_USER在那里面

 uid   name 
1001  Ram
1002  pavan

AM_INTER在那里面

  id   uid     cid
  1    1001    101
  2    1001    102
  3    1002    101 

AM_TIMETABLE在那张桌子

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然后我想以我编写查询的方式获取 userId、name、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

4

2 回答 2

1

当两个表中至少有一个匹配项时,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'
于 2013-04-16T10:41:17.453 回答
0

尝试

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'
于 2012-08-06T13:18:37.450 回答