【发布时间】:2016-04-28 21:03:45
【问题描述】:
我从这个查询开始,它返回了 8 条具有“已声明”状态的记录。我正在查看invites-from-address 列中的任何地址是否与moves-from-address 列中的地址不同:
SELECT i.id, i.company_id, i.status,
ia_f.base_street as "invites-from-address", a_f.base_street as "moves-from-address",
ia_t.base_street as "invites-to-address", a_t.base_street as "moves-to-address", i.`mover_first_name`,
i.mover_last_name, i.`to_address_id`
FROM invites i
JOIN moves m ON i.id = m.`claimed_invite_id`
JOIN `invite_addresses` ia_f ON ia_f.id = i.`from_address_id`
JOIN addresses a_f ON a_f.id = m.from_address_id
JOIN `invite_addresses` ia_t ON ia_t.id = i.to_address_id
JOIN addresses a_t ON a_t.id = m.to_address_id
WHERE i.`company_id` = 1040345
GROUP BY id
我在下面的这个查询中试图做的是动态创建一个average_discrepancy 列,显示invites-from-address 和moves-from-address 之间不同地址的比例。我能够通过使用WHERE 子句来成功检查地址差异,该子句检查ia_f.base_street 不等于a_f.base_street(分别别名为invites-from-address 和moves-from-address 列)但是当我把这个我的SELECT 中的count 函数内的WHERE 子句导致它不起作用。是因为我不能将WHERE 子句放在SELECT 或count 函数或两者中?在我的SELECT 子句中尝试划分对count 函数的两次调用的结果是否也存在问题?
SELECT i.id, i.company_id, i.status,
count(WHERE ia_f.base_street != a_f.base_street)/count(i.status="claimed") as "average_discrepancy",
ia_f.base_street as "invites-from-address", a_f.base_street as "moves-from-address",
ia_t.base_street as "invites-to-address", a_t.base_street as "moves-to-address",
i.`mover_first_name`,
i.mover_last_name, i.`to_address_id`
FROM invites i
JOIN moves m ON i.id = m.`claimed_invite_id`
JOIN `invite_addresses` ia_f ON ia_f.id = i.`from_address_id`
JOIN addresses a_f ON a_f.id = m.from_address_id
JOIN `invite_addresses` ia_t ON ia_t.id = i.to_address_id
JOIN addresses a_t ON a_t.id = m.to_address_id
WHERE i.`company_id` = 1040345
AND i.status = "claimed"
【问题讨论】: