0

私はこのphp mysqlステートメントを持っています

SELECT a.*, p.filename, m.`first name`, m.`last name`, m.`mobile number`, m.`status`, m.`email address`
FROM map a
join members m on a.members_id = m.id
join pictures p on m.pictures_id = p.id
WHERE a.active = 1
GROUP BY a.members_id
order by a.`date added` DESC
limit 1;

しかし、それは機能していません。マップ テーブルにはレコードがあり、それらの多くは同じmembers_id値を持つことができます。members_idそれらを でグループ化し、で並べ替えたいdate addedので、最新のものを各グループの上に置き、一番上の行のみを取得します (つまり、各グループの最新のものを取得します)。

ここで何が悪いのか誰か知っていますか?

ありがとう

4

4 に答える 4

0

1 つのアプローチは、where句を使用して、関心のないレコードを除外することです。

SELECT a.*, p.filename, m.`first name`, m.`last name`, m.`mobile number`, m.`status`, m.`email address`
FROM map a
join members m on a.members_id = m.id
join pictures p on m.pictures_id = p.id
WHERE a.active = 1 and
      a.`date added` = (select max(map.`date added`)
                        from map
                        where map.members_id = a.members_id and
                              map.active = 1
                       )
GROUP BY a.members_id
order by a.`date added` DESC;
于 2013-05-26T18:51:03.493 に答える