具有最大值的mysql嵌套查询

时间:2012-10-09 14:02:50

标签: mysql nested

我有三个表如下,我试图提取为成员的最高visit_number提供问卷的次数。这个想法是为了防止向访问者提示问卷,如果最近已经提示两次(访问号码字段在经过一定时间后递增)。我对它的抨击如下(表格下方),但这显然不对,我得到了数千个结果。希望你至少能够看到我试图用它做什么

Members
->id

Visits
->id
->visit_number
->member_id

Questionnaire
->id
->visit_id

SELECT COUNT(*)
FROM questionnaires q
JOIN visits v 
ON q.visit_id = (SELECT MAX(id) FROM visits v WHERE v.member_id = ".$this->id.")
ORDER BY q.id DESC

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT COUNT(*)
FROM questionnaires q
INNER JOIN Visits v1 ON q.visit_id = v1.id
INNER JOIN
(
    SELECT MAX(visit_number) MaxVisitNumber, member_id
    FROM visits
    GROUP BY member_id
) v2 ON v1.member_id = v2.member_id AND v1.visit_number = v2.MaxVisitNumber
INNER JOIN members m ON v2.member_id = m.Id
WHERE m.Id = @someId