2011-02-15 78 views
0

我有一張表格,裏面保存着一位客戶,另一張表格保存了該客戶的結果。選擇除第一個以外的所有記錄

一個客戶可以有很多結果。

我希望能夠firsly僅選擇在CustResults多個條目,然後從這些,我想除了第一個所有記錄的客戶...

我有這個迄今爲止,它以多個結果檢索客戶,但是我不知道如何才能獲得第一個結果。

SELECT * FROM CustResults cp 
JOIN Customer c ON c.CustomerID = cp.CustomerID 
WHERE 
(SELECT count(CustomerID) as cpid 
FROM CustResults WHERE CustomerID = cp.CustomerID GROUP BY CxID) > 1 

麗塔:RESULT 1 蘇:結果1,結果2,結果如圖3所示,結果4 鮑勃:RESULT 1,結果2,結果3

我只想Sue和鮑勃,因爲麗塔只有一個結果,並從蘇和鮑勃,我只想看看結果2,3,4

任何想法?

感謝

增加了更多的信息:

這裏是我的確切查詢:

SELECT COUNT(cp.CxID)作爲intSmokers FROM CustPrimarySmoking CP JOIN客戶C ON cp.CxID = c.CustomerID WHERE(SELECT count(CustPrimarySmokingID)as cqpid FROM CustPrimarySmoking WHERE CxID = cp.CxID GROUP BY CxID)> 1

顯然,我可以使用LIMIT 1,99999,因爲查詢只返回一個值(計數)。

我想讓Count在CustPrimarySmoking中使用多條記錄的客戶,但忽略第一個條目。

任何進一步的想法?

回答

2

愚蠢和不那麼靈活(但是,應該工作 所有 大部分時間)...

LIMIT 1, 999999999; 
     ^to ensure all rows are returned 
0

你有沒有嘗試添加「OFFSET 1」在查詢結束?

0

如果您之後的所有數據都是計數而不是實際記錄,那麼您只需從已有數量中減去客戶數量(因爲您已經確定每個數據至少爲一條記錄),即

SELECT count(cp.CxID)-count(DISTINCT cp.CxID) as intSmokers 
FROM CustPrimarySmoking cp 
JOIN Customer c ON cp.CxID = c.CustomerID 
WHERE (
    SELECT count(CustPrimarySmokingID) as cqpid 
    FROM CustPrimarySmoking WHERE CxID = cp.CxID 
    GROUP BY CxID 
) > 1 

然而,如果你是實際的行後,這個怎麼樣:

SELECT * FROM Customer; 
    +------------+------+ 
    | CustomerID | name | 
    +------------+------+ 
    |   1 | Rita | 
    |   2 | Sue | 
    |   3 | Bob | 
    |   4 | Jack | 
    +------------+------+ 


    SELECT * FROM CustPrimarySmoking; 

    +----------------------+------+-------------------+ 
    | CustPrimarySmokingID | CxID | result   | 
    +----------------------+------+-------------------+ 
    |     1 | 1 | Result 1 for Rita | 
    |     2 | 2 | Result 1 for Sue | 
    |     3 | 2 | Result 2 for Sue | 
    |     4 | 2 | Result 3 for Sue | 
    |     5 | 2 | Result 4 for Sue | 
    |     6 | 3 | Result 1 for Bob | 
    |     7 | 3 | Result 2 for Bob | 
    |     8 | 3 | Result 3 for Bob | 
    +----------------------+------+-------------------+ 

    SELECT * FROM CustPrimarySmoking cp 
    JOIN Customer c ON cp.CxID = c.CustomerID 
    WHERE CustPrimarySmokingID <> (
     SELECT CustPrimarySmokingID 
     FROM CustPrimarySmoking 
     WHERE CxID = cp.CxID ORDER BY CustPrimarySmokingID LIMIT 1 
    ); 


    +----------------------+------+------------------+------------+------+ 
    | CustPrimarySmokingID | CxID | result   | CustomerID | name | 
    +----------------------+------+------------------+------------+------+ 
    |     3 | 2 | Result 2 for Sue |   2 | Sue | 
    |     4 | 2 | Result 3 for Sue |   2 | Sue | 
    |     5 | 2 | Result 4 for Sue |   2 | Sue | 
    |     7 | 3 | Result 2 for Bob |   3 | Bob | 
    |     8 | 3 | Result 3 for Bob |   3 | Bob | 
    +----------------------+------+------------------+------------+------+ 
相關問題