如何运行wp_Terms数据库的这个SQL查询

时间:2014-09-08 作者:John T

我有以下表格(为了简洁明了,仅包含相关信息)

表名称:wp\\U term\\U关系

object_id    term_taxonomy_id
1266         1341
1266         452
1266         449
表格名称:wp\\U term\\U taxonomy

term_taxonomy_id    term_id
1341                1342
452                 453
449                 450
表名:wp\\U术语

term_id      name      slug
1342         792       792
453          396       396
450          394       394
我有一个wp\\u术语“名称”的列表,我想从wp\\u term\\u关系中获得一个object\\u id的列表(只有唯一的)

因此,我的列表类似于:394、396、988、666,并且我希望它返回(基于上述数据):1266(即,使用wp\\U terms中的term\\u id从wp\\U term\\u taxonomy中获取term\\u taxonomy\\u id,然后最后在wp\\U term\\u关系中使用该值来获取object\\u id)

我对mySQL很陌生,整天都在阅读/实验它,似乎不能完全正确地使用它。

SELECT $wpdb->term_relationships.object_id
FROM $wpdb->term_relationships
    LEFT JOIN $wpdb->term_taxonomy ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
    LEFT JOIN $wpdb->terms ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id   
WHERE name IN (394, 396, 988, 666)  
GROUP BY $wpdb->term_relationships.term_taxonomy_id
ORDER BY $wpdb->term_relationships.term_taxonomy_id DESC
我想知道是否有人可以用一双有经验的眼睛来观察它,并帮助我看到哪里出了问题?

谢谢:-)这是我目前的问题:

1 个回复
最合适的回答,由SO网友:bonger 整理而成

根据评论,您基本上拥有它-只是GROUP BY $wpdb->term_relationships.object_id 相反还有一点需要指出的是,您应该使用标准(内部)连接,而不是左连接:

SELECT $wpdb->term_relationships.object_id
FROM $wpdb->term_relationships
    JOIN $wpdb->term_taxonomy ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
    JOIN $wpdb->terms ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id   
WHERE name IN (394, 396, 988, 666)  
GROUP BY $wpdb->term_relationships.object_id
ORDER BY $wpdb->term_relationships.term_taxonomy_id DESC

结束

相关推荐

MySQL_REAL_ESPRY_STRING的替代方案

我有一个WordPress插件,我需要查看数据库中是否存在某个标题。两年来,该代码运行良好:$myposttitle= $wpdb->get_results( \"select post_title from $wpdb->posts where post_title like \'%\". mysql_real_escape_string($myTitle) . \"%\'\" ); 但是,使用php 5.5。和WP 3.9.1,这会导致错误,因为m