2015-10-16 111 views
0

我被困在查詢中。我在尋找自己的筆記中的一個客戶的評論,但我需要它之前返回說明,其中包括,它與此查詢發現那些後:多行之前和之後的Mysql

SELECT ct.whn, ct.tpe, ct.drctn, ct.smmry, ct.dscrptn, ct.zxcrtdby, 
(SELECT nme FROM sdcrdtr WHERE sdcrdtr.id = ct.crdtr) as 'Creditor Name', 
(SELECT accntrfrnce FROM cddbt WHERE cddbt.id = ct.dbt) as Reference 

FROM cdcntct ct, cdcse c 

WHERE c.id = ct.cse AND c.rfrnce = '123456789' 
AND ct.smmry LIKE '%review%' 

我已經看到了這裏,但類似的問題它用於從表中提供特定ID或類似信息的所有行。

我無法找到從哪裏開始!

在此先感謝。 請問

編輯:採樣日期

ID WhN   SMMRY   DSCRPTN 
12 01/05/2015 Sent Paperwork Info Received 
13 01/05/2014 Reviewed   Some Info Received 
14 28/04/2014 Spoke to Client Said hello 
15 01/05/2013 Note 15   Blank 
16 01/05/2012 Note 16   Blank 
17 01/05/2011 Review done  Blank 
18 30/12/2010 Another note  Blank 

所以,如果我跑我的查詢但對於前行的要求,包括後,它將返回ID的12,13,14和16,然後,17,18。而目前它只返回ID 13和17,因爲我不知道該條款的添加內容。

+1

請提供模式和樣本數據。 – RedFilter

+0

我已經添加了一些示例數據,我不確定您提供模式的含義,對不起。這是一個MySQL數據庫。 – Will

+0

如果您喜歡,請考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的CREATE和INSERT語句(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry

回答

0

你可以做這樣的事情:

select t2.* 
from MyTable t2 
inner join (
    select t.ID, max(tb.ID) as ID_Before, min(ta.ID) as ID_After 
    from MyTable t 
    left join MyTable tb on tb.ID < t.ID 
    left join MyTable ta on ta.ID > t.ID 
    where t.SMMRY like '%review%' 
    group by t.ID 
) a on t2.ID in (a.ID, a.ID_Before, a.ID_After) 

SQL Fiddle

| ID |  WhN |   SMMRY |   DSCRPTN | 
|----|------------|-----------------|--------------------| 
| 12 | 01/05/2015 | Sent Paperwork |  Info Received | 
| 13 | 01/05/2014 |  Reviewed | Some Info Received | 
| 14 | 28/04/2014 | Spoke to Client |   Said hello | 
| 16 | 01/05/2012 |   Note 16 |    Blank | 
| 17 | 01/05/2011 |  Review done |    Blank | 
| 18 | 30/12/2010 | Another note |    Blank |