Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用LIKE(Wordpress自定义高级搜索)将所有多对一进行匹配的SQL_Sql_One To Many - Fatal编程技术网

使用LIKE(Wordpress自定义高级搜索)将所有多对一进行匹配的SQL

使用LIKE(Wordpress自定义高级搜索)将所有多对一进行匹配的SQL,sql,one-to-many,Sql,One To Many,我有3个表,我想在其中检索符合所有搜索条件的帖子。标准是可能有一个或多个值的分类法。例如,查找分类法“媒介”与“丙烯酸”和“油”匹配的帖子 下面是我想做的一个示例查询,但显然不起作用: SELECT DISTINCT p.* FROM wp_posts p LEFT JOIN wp_term_relationships txrm ON p.ID = txrm.object_id LEFT JOIN wp_term_taxonomy txm ON txrm.term_taxonomy_id =

我有3个表,我想在其中检索符合所有搜索条件的帖子。标准是可能有一个或多个值的分类法。例如,查找分类法“媒介”与“丙烯酸”和“油”匹配的帖子

下面是我想做的一个示例查询,但显然不起作用:

SELECT DISTINCT p.* FROM wp_posts p 
LEFT JOIN wp_term_relationships txrm ON p.ID = txrm.object_id 
LEFT JOIN wp_term_taxonomy txm ON txrm.term_taxonomy_id = txm.term_taxonomy_id 
LEFT JOIN wp_terms trm ON txm.term_id = trm.term_id 
WHERE txm.taxonomy= 'mediums' AND ( trm.name LIKE '%Acrylic%' AND trm.name LIKE '%Oil%' ) 
AND p.post_status = 'publish' 
AND p.post_type = 'gallery'
GROUP BY p.ID 
ORDER BY p.post_date DESC
我该怎么做


谢谢

以防万一有人在找类似的东西,这就是我的选择,它很有效,但我不确定它的效率有多高:

SELECT DISTINCT p.* FROM wp_posts p
INNER JOIN (
    SELECT txrm.object_id
    FROM wp_term_relationships txrm
    LEFT JOIN wp_term_taxonomy txm ON txrm.term_taxonomy_id = txm.term_taxonomy_id
    LEFT JOIN wp_terms trm ON txm.term_id = trm.term_id
    WHERE txm.taxonomy = 'mediums'
    AND ( trm.name LIKE '%Acrylic%' OR trm.name LIKE '%Oil%' )
    GROUP BY txrm.object_id
    HAVING count(trm.name) = 2
    ) AS trm ON p.ID = trm.object_id
WHERE p.post_status = 'publish'
AND p.post_type = 'gallery'
GROUP BY p.ID
ORDER BY p.post_date DESC
因此,子查询返回一个post\u id/object\u id列表,其计数为2:

object_id|term.name
1        |oil
1        |acrylic
2        |oil
所以在上面的例子中,只有post 1的计数为2,因为它同时匹配油和丙烯酸