【发布时间】:2013-08-09 15:12:51
【问题描述】:
我试图查看类似的问题,但找不到(如果我错过了链接,请随时将其关闭为重复)。
这是我的结构:
subscriptions (id, day, site_id)
sites (id, name, pole_id)
poles (id, name, type_id)
poletypes (id, name)
这是我的查询:
SELECT sub.id FROM `subscriptions` sub
LEFT JOIN sites s ON sub.site_id = s.id
LEFT JOIN poles p ON p.site_id = s.id
WHERE sub.day BETWEEN '2013-01-01' AND '2013-01-30' AND s.id = 2 AND p.type_id = 3
为简化起见,我希望订阅发生在 2013-01-01 和 2013-01-30 之间,发生在站点 ID 2 和 Pole type_id 3 中。
一切正常,除了pole.type_id。我可以将其更改为我想要的任何内容,它完全被忽略了。
由于一个站点可以有多个极点,因此我没有直接关系。 subscriptions 包含指向 site 的链接(通过 site_id),但我为极点做了其他工作,它是 poles 直接链接到 site,因此忽略了 type_id 约束。
但是,我该怎么做才能按type_id 过滤呢?
【问题讨论】:
-
你可以用你当前的结果集添加小提琴,并添加所需的结果集,这样有助于查看问题
标签: mysql join where-clause