【发布时间】:2011-09-16 22:06:26
【问题描述】:
我正在尝试检查特定年龄段的人。我有两个 ComboBoxes,minagecombobox 和 maxagecombobox,值在 1 到 120 之间。
我想得到年龄在这两个值之间的人(例如我想过滤掉年龄在 18 到 24 之间的人)。
这是成员表结构:
member_id
member_firstname
member_dob(datatype is string) (values like 1987-09-08,1976-09-08,.....)
我正在使用 mysql 作为我的数据库.....
**Modified query**
SELECT members.member_Id,
members.member_Lastname as 'Last Name',
members.member_Firstname as 'First Name',
members.member_Postcode as 'Post Code',
members.member_Reference as Reference,
members.member_CardNum as 'Card Number',
members.member_IsBiometric as Biometric,
members.member_DOB as DoB,
mshiptypes.mshipType_Name as Membership,
mshipstatustypes.mshipStatusType_Name as Status,
membertomships.memberToMship_EndDate as Expiry
FROM members
INNER JOIN membertomships ON membertomships.member_Id = members.member_Id
INNER JOIN mshipoptions ON mshipoptions.mshipOption_Id = membertomships.mshipOption_Id
INNER JOIN mshiptypes ON mshiptypes.mshipType_Id = mshipoptions.mshipType_Id
INNER JOIN mshipstatustypes ON mshipStatusTypes.mshipStatusType_Id = membertomships.mshipStatusType_Id
WHERE memberToMship_EndDate BETWEEN '2011-09-24' AND '2011-09-30'
AND members.member_active LIKE 'y%'
AND (YEAR(CURDATE(members.member_Dob))-YEAR()) - (RIGHT(CURDATE(),5)< RIGHT(member_Dob,5)) BETWEEN '21' AND '102'
ORDER BY members.member_Lastname
遇到这样的错误.....
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'member_Dob))-YEAR()) - (RIGHT(CURDATE(),5)< RIGHT(member_Dob,5)) BETWEEN '21' AN' at line 19
【问题讨论】:
-
到目前为止你做了什么?
-
你用什么来显示 UI / 组合框? PHP、ASP .NET、WinForms 等等……?请适当标记。
-
组合框让你迷失了方向。您是否只想从当前数据库中选择介于特定年龄之间的人?或者你想做什么?组合框不是 mySQL,它们是您用来与数据库交互的任何语言。请澄清。
-
@Yuck:组合框是红鲱鱼恕我直言——它们与问题没有任何关系。
-
@errorcode105:它甚至告诉你错误在哪里。在参考文献中查找
CURDATE()是不是太过分了? dev.mysql.com/doc/refman/5.5/en/…