好的,我正在使用WordPress,但这与SQL方面有关。
我有一个查询,其中我需要使用三个不同的类别过滤掉帖子,但它们都是帖子中的所有条款。
例如:
在我的三个类别中,我选择了以下内容:(Academia,Webdevelopment)
(Fulltime,Parttime)
(Earlycareer)
。
现在我想要做的是确保当我查询帖子中至少有一个这些术语时。
正确结果:标记为Academia, Fulltime, Earlycareer
错误结果:标记为Academia, Earlycareer
的帖子(没有全职或兼职)
目前,我的查询看起来像这样:
SELECT * FROM $wpdb->posts WHERE
(
$wpdb->terms.slug IN (list of selected from category 1) AND
$wpdb->terms.slug IN (list of selected from category 2) AND
$wpdb->terms.slug IN (list of selected from category 3)
)
AND $wpdb->term_taxonomy.taxonomy = 'jobtype' AND .......
使用此查询时,当我选择不同的类别时,它不会返回任何结果(也就是说,我可以从类别1中选择4个并且它有结果,但我不能从类别2或3中选择任何内容。反之亦然)
我不确定这是否与在同一列上多次使用IN
有关。
提前感谢您的帮助!
答案 0 :(得分:0)
您的查询似乎是正确的。关于在相同的列中使用IN,SQL没有任何限制。
但请确保您的list of selected from category 1/2/3
查询中没有任何NULL值。即使单个NULL值在这些列表中也会因整个'WHERE'条件而给出NULL,因此您将得不到任何结果。
如果这无济于事,则必须是WordPress问题。