2012-07-31 107 views
-2

TABLE1SQL查詢三個表

ID |  DATE    Ordered 
a | 10-06-2012 |  1 
b | 07-07-2012 |  1 
c | 10-06-2012 |  0 

TABLE2

ID | OrdersID 
a |  001 
b |  002 
c |  003 

表3

OrdersID | Items | 
001  | 5 | 
002  | 3 | 
003  | 7 | 

我有三個表,我想搜索t他在TABLE1中DATE,例如10-06-2012和訂購例如1並返回ID'a'。

在表2我想它使用表1的結果得到OrdersID

而在表3我想它使用Tables2的結果返回項目 ID是兩個表中常見的。

+3

[你嘗試過什麼?](http://WhatHaveYouTried.com) – 2012-07-31 06:43:10

+0

你嘗試過什麼嗎?它是一個嵌套3級嵌套的簡單嵌套查詢。 – amitchhajer 2012-07-31 06:43:38

回答

1

你用的是什麼RDBMS,MS SQL Server,MySQL,Oracle?做一些研究如何handle tSQL,create queries,use Joins等,不會傷害你。

如果您使用的是MS SQL Server,請使用您提供的數據。要小心,嵌套查詢可以非常緩慢,檢查你的索引,主鍵等

--get from Table1 Id's filtering by date and Ordered fields 
SELECT t1.Id 
    FROM Table1 t1 JOIN Table2 t2 
WHERE t1.[Date] = '10062012 00:00:00' 
    AND t1.Ordered = 1 

--get from Table2 OrderedID filtered by previous query 
SELECT t2.OredersID 
    FROM Table2 t2 
WHERE t2.ID IN (SELECT t1.Id 
        FROM Table1 t1 JOIN Table2 t2 
        WHERE t1.[Date] = '10062012 00:00:00' 
        AND t1.Ordered = 1 
       ) 

--get from Table3 Items filtered by previous query 
SELECT t3.Items 
    FROM Table3 t3 
WHERE t3.OrdersID IN (SELECT t2.OrdersID 
         FROM Table2 t2 
         WHERE t2.ID IN (SELECT t1.Id 
              FROM Table1 t1 JOIN Table2 t2 
             WHERE t1.[Date] = '10062012 00:00:00' 
              AND t1.Ordered = 1 
             ) 
        ) 

--Using JOINS, not sure if this is 100% correct 
--get from Table3 
SELECT t3.Items 
    FROM Table3 t3 
     JOIN Table2 t2 ON t3.OrdersID = t2.OrdersID 
     JOIN Table1 t1 ON t2.ID = t1.ID 
WHERE t1.[Date] = '10062012 00:00:00' 
    AND t1.Ordered = 1