我确信我的标题还有很多不足之处,但让我试着解释一下这个问题。
我有一张表accounts
,如此:
+----------+-----------+-----------+
| id | name | email |
+----------+-----------+-----------+
| 1 | Bob |bob@bob.com|
+----------+-----------+-----------+
我有一个像这样的包表:
+----------+-----------+-----------+--------+--------+
| id |package_id | start_date|end_date| acc_id |
+----------+-----------+-----------+--------+--------+
| 1 | 15 |2014-01-01 | | 1 |
+----------+-----------+-----------+--------+--------+
一个帐户可以包含多个包,但它们不会包含相同的包,即两个活动包package_id
为15个。
我需要有效地选择他们没有package_id
为15或25的活动包的所有帐户。我使用以下内容来确定包是否处于活动状态:
({packages.start_date} >= CurrentDate and ({packages.end_date} <= CurrentDate or {packages.end_date} = DATE(0000,00,00) or ISNULL({packages.end_date})))
我已经看到我可以说在公式中有第二个选择,选择一个名称,然后使用此值进行比较。例如,
(select * from packages where ({packages.start_date} >= CurrentDate and ({packages.end_date} <= CurrentDate or {packages.end_date} = DATE(0000,00,00) or ISNULL({packages.end_date}))) AND acc_id = accounts.id AND package_id IN(15,25)) AS has_package
我可以这么说:
has_package <= 0
任何帮助都将不胜感激。
答案 0 :(得分:0)
在记录选择公式中写下代码:
Not(package_id IN(15,25)))