2012-07-17 76 views
0

假设我有一张客户表(tblClients)和一个引号表(tblQuotes)。SQL超过2个表之间的关系

从我们现有的客户得到的所有报价,我做了以下内容:

SELECT q.quoteId, c.contact, q.job, 
FROM tblQuotes AS q 
INNER JOIN tblClients AS c ON q.user = c.user 

对于每一个报价,我们得到了引号的创建日期。该日期在tblDate。我发现,用于显示日期的唯一途径是当我展示我的记录,我做的其他要求是这样的:

SELECT Date 
FROM tblDate 
WHERE id = %1 => %1 is q.quoteId 

一切工作正常,但我还是决定添加交替SQL请求输入。例如,c.Contact可以是 “约翰”

WHERE c.Contact = 'John' 

怎么样Date?我可以很容易地得到q.quoteIdc.Contactq.Job,但我不知道如何使它与Date一起工作。

WHERE c.Contact = 'John' AND ... 
+0

'tblDate'的结构是什么?当然有一个'quoteId'或者其他可以加入的领域? – LittleBobbyTables 2012-07-17 16:06:09

+0

tblDate上有外键吗? – jeschafe 2012-07-17 16:06:29

回答

2

只需添加另一个连接(使用INNER JOIN假设每个报价有一个日期值):

SELECT 
    q.quoteId, c.contact, q.job, d.Date 
FROM 
    tblQuotes AS q INNER JOIN 
     tblClients AS c ON q.user = c.user INNER JOIN 
      tblDate AS d on d.id = q.quoteId 

然后,您可以修改相应的使用WHERE子句指定任何附加条件:

SELECT 
    q.quoteId, c.contact, q.job, d.Date 
FROM 
    tblQuotes AS q INNER JOIN 
     tblClients AS c ON q.user = c.user INNER JOIN 
      tblDate AS d on d.id = q.quoteId 
WHERE 
    d.Contact = 'John'