0

好的,我使用的是 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在同一列上多次使用有关。

提前感谢您的帮助!

4

1 回答 1

0

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

list of selected from category 1/2/3但请确保您的查询中没有任何 NULL 值。由于整个“WHERE”条件,即使这些列表中的单个 NULL 值也会给出 NULL,结果您将一无所获。

如果这没有帮助,那么它一定是 WordPress 问题。

于 2012-04-25T20:22:27.513 回答