0

以下のクエリがあり、ほとんどの場合正しい結果が得られます。唯一のことは、同じユーザー ID を持つ複数の写真が存在する可能性があり、最後にアップロードされた写真をプルすることです。現在構成されており、ランダムな写真が表示されます。にタイムスタンプ フィールドがありますがtblimage、それをこのクエリに組み込んで、最後にアップロードされた写真を取得する方法がわかりません。

SELECT tblimage.*, events.* 
  FROM (events LEFT JOIN tblfollowers
 ON events.id_user = tblfollowers.username) 
     LEFT JOIN tblimage ON events.id_user = tblimage.userid
     WHERE (((tblfollowers.follower_id)='$test') 
     AND (DATE_FORMAT(events.start_date,'%Y-%m-%d')='$today')) 
     OR (((tblfollowers.follower_id)='$test') 
     AND (DATE_FORMAT(events.end_date,'%Y-%m-%d')='$today')) 
     OR (((events.id_user) ='$test') 
     AND (DATE_FORMAT(events.start_date,'%Y-%m-%d')='$today')) 
     OR (((events.id_user) ='$test') 
     AND (DATE_FORMAT(events.end_date,'%Y-%m-%d')='$today')) 
GROUP BY  events.event_id

私が共有できると思ったいくつかの詳細。 tblimageたとえば、次のレコードがあります。

userid=25 photo = 1.png timestamp = 12:00 jan 19
userid=25 photo = 2.png timestamp = 1:00 jan 18

1月19日の写真だけでお願いします。

4

2 に答える 2

1

最後に含める

GROUP BY tblimage.userid 並べ替え tblimage.userid DESC

すでに Goup by が含まれているため、ユーザーの最新の写真を取得できます。

于 2013-01-20T05:53:27.963 に答える
0

うわー、これはかなり複雑です。

必要なのは、where 句に次を入れることです。

events.start_date=MAX(events.start_date) OR events.end_date=MAX(events.end_date)

その日付に複数のレコードがあった場合、その日付がタイムスタンプでない限り、> 1 が返されます。

于 2013-01-20T06:05:28.443 に答える