[英]Using a join within a sub query?
以下查詢將返回所有欠款超過50的affiliate_id
。
SELECT
t1.affiliate_id
FROM
(
SELECT affiliate_id, SUM(payout) AS payout_total
FROM exp_cdwd_aff_purchases
GROUP BY affiliate_id
) t1
LEFT JOIN
(
SELECT affiliate_id, SUM(amount_paid) AS amount_paid_total
FROM exp_cdwd_aff_payments
GROUP BY affiliate_id
) t2
ON t1.affiliate_id = t2.affiliate_id
WHERE t1.payout_total > COALESCE(t2.amount_paid_total, 0) + 50
我還需要為表exp_member_data
每個affiliate_id
返回一個電子郵件地址。 可以針對member_id
引用affiliate_id
。
我曾以為以下方法可能有效,但事實並非如此。 誰能解釋我如何得到這個結果?
SELECT
t1.affiliate_id, t1.m_field_id_26
FROM
(
SELECT af.affiliate_id, SUM(af.payout) AS payout_total, md.m_field_id_26
FROM exp_cdwd_aff_purchasesAS af
LEFT JOIN exp_member_data AS md.member_id = af.affiliate_id
GROUP BY affiliate_id
) t1
LEFT JOIN
(
SELECT affiliate_id, SUM(amount_paid) AS amount_paid_total
FROM exp_cdwd_aff_payments
GROUP BY affiliate_id
) t2
ON t1.affiliate_id = t2.affiliate_id
WHERE t1.payout_total > COALESCE(t2.amount_paid_total, 0) + 50
如果我正確地閱讀了您的查詢,那么最簡單的方法就是在末尾添加另一個連接以引入電子郵件地址。 像這樣:
SELECT
t1.affiliate_id,
COALESCE(t3.m_field_id_26, 'email is NA') AS m_field_id_26
FROM
(
SELECT affiliate_id, SUM(payout) AS payout_total
FROM exp_cdwd_aff_purchases
GROUP BY affiliate_id
) t1
LEFT JOIN
(
SELECT affiliate_id, SUM(amount_paid) AS amount_paid_total
FROM exp_cdwd_aff_payments
GROUP BY affiliate_id
) t2
ON t1.affiliate_id = t2.affiliate_id
LEFT JOIN exp_member_data t3
ON t1.affiliate_id = t3.member_id
WHERE t1.payout_total > COALESCE(t2.amount_paid_total, 0) + 50
正如您目前所擁有的那樣,在聚合查詢中進行聯接可能並不理想,因為該子查詢的存在是為了統計事物,而不包括電子郵件地址信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.