2016-12-14 20 views
0

に参加し、私は、これらの3つのテーブル(これらの構造を持つ)を持つ:MYSQLクエリを選択&

 outreach 
     id url    profile_id 
------------------------------------------ 
     40 www.google.com  2 
     41 www.yahoo.com  3 
     42 www.test.com  1 

     outreach_links 
     id outreach_id end_date   status 
    ----------------------------------------------- 
     1 41   2016-01-12  Pending 
     2 40   2016-03-12  Pending 
     3 40   2016-02-12  Approved 

     comments 
     id outreach_id name 
    ---------------------------- 
     1 40 
     2 40 
     3 40 

を、私はこのクエリを持っている:

select o.*, 
SUM(if(ol.status = "Approved" and (ol.end_date > now() or end_date is null), 1, 0)) as cond1, 
SUM(if(ol.status = "Pending" and (ol.end_date != now() or end_date is null), 1, 0)) as cond2, 
SUM(if(ol.status = "Pending" and (ol.end_date < now()), 1, 0)) as cond3 
from outreach o 
left join outreach_links ol on ol.outreach_id = o.id 
where o.profile_id=2 
group by o.id 
having (cond1 = 0 and cond2 = 0) or (cond1 = 0 and (cond2 = 1 and cond3 >=1)) order by ol.end_date desc 

私はこのクエリを修正して作るしようとしています次の項目も選択します。

1). ol.* ONLY if MAX(end_date) and 
2). Count(id.comment) count all comments for that particular row 

は可能ですか?ここで今

が出力

+"id": "40" 
+"profile_id": "2" 
+"url": "http://www.google.com" 
+"created_at": "2016-12-05 21:55:10" 
+"updated_at": "2016-12-05 22:49:56" 
+"cond1": "0" 
+"cond2": "0" 
+"cond3": "5" 

である私は

+"max_date": get me max of end_date and the whole row of the row highlighted 
+"Count(comments)": get me all the comments count for this one which is 3 

おかげ

答えて

0

あなたは、最新の更新日時を取得しようとしている追加したいですか?次のクエリは、最新の更新日を示すはずです。

しかし、cond1、cond2、cond3の取得しようとしているもの、およびcreated_date、およびupdated_dateとして移入する必要があるものはわかりません。これらのフィールドの定義を教えてください。

SELECT o.*, ol.*, COUNT(c.id) 
FROM outreach o 
LEFT JOIN outreach_links ol ON ol.outreach_id = o.id 
LEFT JOIN comments c ON c.outreach_id = o.id 
WHERE ol.id = (SELECT ol2.id 
       FROM outreach_links ol2 
       WHERE ol2.outreach_id = ol.outreach_id    
       ORDER BY ol2.end_date, ol2.id DESC 
       LIMIT 1) 
     OR ol.id IS NULL 
GROUP BY o.id, ol.id 
+0

誰かがロジックCOND1、COND2と3 >> http://stackoverflow.com/questions/41113660/multiple-not-exsits-in-mysql-to-check-count-ofを説明し、ここでこの私を助けましたそれをチェックアウトしますが、max end_dateとコメント数を選択するためにそれを拡張する必要があります – user3150060