2015-05-20 97 views
0

我裏面有多個表的mysql數據庫:在查詢中使用子查詢的

  • matters

    1. matterid
    2. mattername
    3. state
  • matterjuncstaff

    1. junked
    2. matterid
    3. staffid
  • staff

    1. staffid
    2. staffname
    3. lead(引線可以是Y或N)
  • matterjunactions

    1. matterid
    2. actiondate

規則

  • 的事情都會有許多與之相關的工作人員,但只有一個領先。
  • 一件事可以有任何數量的行爲與它關聯。

我想提取的表給出了所有事項,他們的state'Open',並列出了matteridmatternamestaffname的人誰是在matterlead(即具有lead='Y')和最後actiondatematter

我已經嘗試過這樣做的各種方式,並相信它可以使用子查詢完成,但我無法計算出將這些數據導入到查詢中的格式。

+2

可以請你一些虛擬數據添加表。和預期的產出。同時粘貼你試過的查詢。 –

+0

聽起來像一羣對我來說。選擇要分組的列,然後最後一列應爲max(actiondate)。 – avk

+0

格式化問題,以便我們可以理解 –

回答

1

它應該是這樣的:

Select m.matterid, m.mattername, s.staffname, max(actiondate) 
From matters m 
Inner join matterjuncstaff mjs using (matterid) 
Inner join staff s using (staffid) 
Inner join matterjunactions mj 
On mj.Matterid = m.matterid 
Where m.state = 'open' 
And s.lead = 'Y' 
Group by m.matterid, m.mattername, s.staffname 
+0

Hi @Graham如果這個或任何答案已經解決了您的問題,請考慮[接受它](http://meta.stackexchange.com/q/5234/179419)點擊檢查-標記。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 – WorkSmarter

+0

這工作正常。謝謝。 雖然我還有一個跟進。我想要得到的表格如下所示: mattername |最大(動作日期)| staffname | matterabc | 2015-03-01 |弗雷德史密斯| \t 如上所述,員工姓名是任何領域'領導'標記爲'Y'的人員。對於某些問題,有2到3名主要人員,我想將它們全部顯示在一行上。因此,對於每件事情,我們會得到如下結果: mattername |最大(動作日期)| staffname | matterabc | 2015-03-01 |弗雷德史密斯,蘇瓊斯| 有沒有辦法讓我知道? –