Php 未知列';到期日';在';其中第'条;我的sql查询
我有多个表,我正在使用以下查询按到期日筛选尚未到期的记录 我的问题是:Php 未知列';到期日';在';其中第'条;我的sql查询,php,mysql,Php,Mysql,我有多个表,我正在使用以下查询按到期日筛选尚未到期的记录 我的问题是: SELECT MT.id, CONCAT(MEM.name,' ',MEM.last_name) AS name, IFNULL((SELECT MAX(MFT.membership_end_date) FROM membership_future_transaction AS MFT WHERE MFT.membership_transaction_id = M
SELECT
MT.id,
CONCAT(MEM.name,' ',MEM.last_name) AS name,
IFNULL((SELECT MAX(MFT.membership_end_date)
FROM membership_future_transaction AS MFT
WHERE MFT.membership_transaction_id = MT.id),MM.end_date) AS expiry_date,
MEM.phone,
MEM.email,
MMST.name AS membership_name,
MMST.price,
MMST.session
FROM
membership_transaction AS MT
LEFT JOIN member_master AS MEM ON MEM.id = MT.member_id
LEFT JOIN members_membership AS MM ON MM.membership_transaction_id = MT.id
LEFT JOIN membership_master AS MMST ON MMST.id = MT.membership_id
WHERE
MT.is_casual = 'No'
AND MT.is_deleted = 'No'
AND MM.is_cancelled = 'No'
AND expiry_date >= '2016-01-01'"
但是我在“where子句”错误中得到了未知列“expiration\u date”。请帮助我这里缺少了什么。MySQL有一个很好的功能,您可以使用带有别名的
having
。因此,如果将where
子句更改为:
WHERE MT.is_casual = 'No' AND
MT.is_deleted = 'No' AND
MM.is_cancelled = 'No'
HAVING expiry_date >= '2016-01-01'"
那么它应该会起作用。当然,这不会像您所期望的那样适用于具有重复的
group by
表的查询,该表中有“到期日”列。如果您使用的是别名,请使用别名您不能使用这种方式在何处引用别名。你可以使用HAVING,也可以使用WHERE,直接写出整个别名的内容(这会更快)@DrewPierce谢谢我用别名编写它