2 つの関連テーブルがあるとします。a という名前の最初のものには、次の列があります。
activityid
subject
date
b という名前の 2 番目のものには、これらの列があります
activityid
crmid
activityid
は、a と b を関連付けるものです。
テーブルで同じ crmid を持つ複数の値である重複値をチェックする必要があります b. 次のクエリを使用します。
SELECT y.activityid, y.subject
FROM vtiger_activity y
INNER JOIN (SELECT DISTINCT a.activityid, a.crmid
FROM vtiger_seactivityrel a, vtiger_seactivityrel b
WHERE a.crmid = b.crmid
AND a.activityid != b.activityid) z
ON y.activityid = z.activityid
これらすべてを正常に取得できます。今activityid
、同じcrmid
. より詳しく説明すると、crmid = 20 の 3 行と crmid = 21 の 4 行がある場合、crm = 20 の最高のアクティビティ ID だけでなく、crmid = 21 の最高のアクティビティ ID も必要です。以下:
SELECT y.activityid, y.subject
FROM vtiger_activity y
INNER JOIN (SELECT DISTINCT a.activityid, a.crmid
FROM vtiger_seactivityrel a, vtiger_seactivityrel b
WHERE a.crmid = b.crmid
AND a.activityid != b.activityid) z
ON y.activityid = z.activityid
WHERE y.activityid = (SELECT MAX(activityid)
FROM (SELECT y.activityid, y.subject
FROM vtiger_activity y
INNER JOIN (SELECT DISTINCT a.activityid, a.crmid
FROM vtiger_seactivityrel a, vtiger_seactivityrel b
WHERE a.crmid = b.crmid AND a.activityid != b.activityid) z
ON y.activityid = z.activityid) t)
全体的に最高のアクティビティIDしか提供できません。さらに、すべての重複を削除したいのですが、最も高いactivityid
. これらのタスクを実行するための適切なクエリは何ですか? 誰にでも感謝します。
何だろうと思っている人は、vtigercrm です。