2012-03-19 11 views
0

「最近のレポート」ボックスにhttp://budburst.orgという最後の3つの送信された観測データが正常に入力されました。最後の3人のユーザーによる最新のエントリを返すクエリ

現在のところ、1人のユーザーが複数の観測を送信すると、それらの観測者は複数回表示されます。私がしたいのは、最後の3つのユーザーの最新のの観測だけがになるようにクエリを調整することです。

は、ここに私の現在のクエリです:

SELECT tbl_observations.ID,tbl_observations.Observer_ID, 
     tbl_observations.Station_ID, tbl_observations.Species_ID, 
     tbl_observations.Species_ID_Fix,tbl_observations.Phenophase_ID, 
     tbl_observations.Observation_Date, tbl_observations.Creation_Date, 
     tbl_species.Common_Name, tbl_people.First_Name, tbl_people.Last_Name, 
     tbl_people.Addr_City, tbl_people.Addr_State, tbl_stations.Station_City, 
     tbl_stations.Station_State, tbl_phenophases.Phenophase_Name, 
     tbl_users.UserName 
FROM tbl_observations 
JOIN tbl_species ON tbl_observations.Species_ID = tbl_species.Species_ID 
JOIN tbl_stations ON tbl_observations.Station_ID = tbl_stations.Station_ID 
JOIN tbl_people ON tbl_observations.Observer_ID = tbl_people.Person_ID 
JOIN tbl_users ON tbl_users.User_ID = tbl_people.Person_ID 
JOIN tbl_phenophases ON tbl_observations.Phenophase_ID = tbl_phenophases.Phenophase_ID 
WHERE (YEAR(tbl_observations.Observation_Date) = YEAR(CURDATE())) 
AND (tbl_species.Common_Name <> '--Other--') 
AND (tbl_users.UserName NOT LIKE 'pbbtest%') 
ORDER BY tbl_observations.Creation_Date DESC, tbl_observations.ID DESC LIMIT 0,3 
+2

最初のクエリを投稿してください... – Randy

+0

これまでにクエリを実行しましたか?私は近くに来るクエリを持っていますが、特定のケースでは3以上を返します。 –

+0

私はあまり進歩していません。私がこれを理解したと思うたびに、同じ日付に「有効な」観察をスキップしていることが分かります!私はmax()に基づいていろいろなクエリを試しましたが、私が何をするかに関係なく、1日に1つのobsを取得します(しかし、少なくともユーザーは繰り返しません)。かなり迷惑な。 – dwardio

答えて

0

ここではテストされていないアイデアです:ちょうど観察者によってMAXの観察とグループを選択します。

SELECT o.m_ID,tbl_observations.Observer_ID, 
     tbl_observations.Station_ID, tbl_observations.Species_ID, 
     tbl_observations.Species_ID_Fix,tbl_observations.Phenophase_ID, 
     tbl_observations.Observation_Date, tbl_observations.Creation_Date, 
     tbl_species.Common_Name, tbl_people.First_Name, tbl_people.Last_Name, 
     tbl_people.Addr_City, tbl_people.Addr_State, tbl_stations.Station_City, 
     tbl_stations.Station_State, tbl_phenophases.Phenophase_Name, 
     tbl_users.UserName 
FROM tbl_observations 
, (select max(id) m_id, observer_id from tbl_observations group by observer_id) o 
JOIN tbl_species ON tbl_observations.Species_ID = tbl_species.Species_ID 
JOIN tbl_stations ON tbl_observations.Station_ID = tbl_stations.Station_ID 
JOIN tbl_people ON tbl_observations.Observer_ID = tbl_people.Person_ID 
JOIN tbl_users ON tbl_users.User_ID = tbl_people.Person_ID 
JOIN tbl_phenophases ON tbl_observations.Phenophase_ID = tbl_phenophases.Phenophase_ID 
WHERE tbl_observations.observer_id = o.observer_id 
AND tbl_observations.id = o.id 
AND (YEAR(tbl_observations.Observation_Date) = YEAR(CURDATE())) 
AND (tbl_species.Common_Name <> '--Other--') 
AND (tbl_users.UserName NOT LIKE 'pbbtest%') 
ORDER BY tbl_observations.Creation_Date DESC, tbl_observations.ID DESC LIMIT 0,3 
関連する問題