2014-04-16 62 views
0

以下是我的表,這是學生證是兩個表中的常見字段。我想在單個查詢中獲取兩個表格數據。同時獲取學生的最新數據。如何使用單個mysql查詢獲取兩個表數據?

table A: 

     student_id name  surname  email 
     ------------------------------------------------ 
       1  ABC  LLL  [email protected] 
       2  PQR  SSS  [email protected] 


     Table B: 

      student_id Assignment_Id Assignment_Name  last_submited 
     --------------------------------------------------------------------- 
       2   1    asign_1   sub_0001 
       1   2    asign_2   sub_0002 
       2   3    asign_2   sub_0003 

我想精確的輸出,如: -

student_id Assignment_Id   email  last_submited 
-------------------------------------------------------------- 
    2    3    [email protected]  sub_0003 

我已經使用以下用於獲取最近記錄查詢,但困惑如何得到電子郵件ID與此相伴。

SELECT assignment_id, 
     student_id, 
     last_submited 
FROM tableB 
WHERE student_id= '2' 
ORDER BY assignment_id DESC LIMIT 1 
+0

mysql或sql server ...不能都是 –

回答

1

加入兩個表,

SELECT B.assignment_id, 
     B.student_id, 
     A.email_id , 
     B.last_submited 
FROM tableB 'B', 
      tableA 'A' 
WHERE B.student_id= '2' 
    AND A.student_id=B.student_id 
ORDER BY assignment_id DESC LIMIT 1 
1

您需要使用join

SELECT a.student_id, 
     b.Assignment_id, 
     a.email, 
     b.last_submitted 
FROM a 
INNER JOIN b ON a.student_id = b.student_id 
WHERE a.student_id= '2' 
ORDER BY b.assignment_id DESC LIMIT 1 
2

您可以使用的JOIN

select tableB.assignment_id, 
     tableB.student_id, 
     tableB.last_submited, 
     tableA.email 
from tableB INNER JOIN 
     tableA ON tableB.student_id = tableA.student_id 
where tableB.student_id= '2' 
order by tableB.assignment_id desc 
limit 1 

INNER JOINs用於返回數據在兩個表中的數據(因此entryA將存在於tableA和tableB中)。

LEFT JOINs用於您希望檢索tableA中的所有數據和tableB中可用的值。

所以,讓我們說你有

TABLEA 
------- 
1 
2 

TABLEB 
------- 
1 

SELECT * 
FROM TABLEA INNER JOIN 
TABLEB ON TABLEA.ID = TABLEB.ID 

將返回

1,1 

SELECT * 
FROM TABLEA LEFT JOIN 
TABLEB ON TABLEA.ID = TABLEB.ID 

會返回

1,1 
2,NULL 
+0

感謝Astander爲我完美的工作,並感謝您的解釋很好 – user3345596

相關問題