2012-04-25 110 views
0

好的,我使用的是WordPress,但这属于SQL方面。SQL在一个列上的多个IN语句

我有一个查询,我需要使用三个不同的类别过滤帖子,但它们都是帖子中的所有术语。

例如:

在我的三个类别,我选择以下内容:(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

您所写的查询应该与您的CORRECT/INCORRECT结果相匹配。我不明白'不同类别中选择'的意思 – 2012-04-25 20:19:55

回答

0

您的查询似乎是正确的。有关在同一列最少使用IN的SQL没有任何限制。

但要确保你没有在你的list of selected from category 1/2/3查询的任何NULL值。即使这些列表中的单个NULL值将由于'WHERE'条件而给出NULL,您将不会得到任何结果。

如果这不会再帮它必须是WordPress的问题。