0

私は次の3つのテーブルを持っており、メンバーの最大のvisit_numberに対してアンケートが提供された回数を抽出しようとしています。質問票が最近2回プロンプトされた場合に、訪問者に質問票がプロンプトされないようにするという考え方です(visit_numberフィールドは、一定の時間が経過すると増分されます)。私のbashは次のとおりです(表の下)が、これは明らかに正しくなく、何千もの結果が得られます。うまくいけば、少なくとも私がそれで何をしようとしているのかを見ることができるでしょう

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
4

1 に答える 1

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
于 2012-10-09T14:08:14.957 に答える