2012-08-06 72 views
1

在MySql數據庫必須在如何從多個表中獲取詳細信息?

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

AM_USERAM_COURSE表在

uid name 
1001 Ram 
1002 pavan 

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

AM_TIMETABLEAM_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

回答

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' 
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' 
相關問題