【问题标题】:wpdb query - How to display the result even if values are missing?wpdb 查询 - 即使缺少值,如何显示结果?
【发布时间】:2016-06-24 02:16:50
【问题描述】:

我已经读过,如果“$wpdb->get_results”查询中缺少数据,那么结果将完全为空。

我的查询如下:

$results = $wpdb->get_results("

SELECT 
( SELECT guid FROM ch_posts WHERE id = m.meta_value ) AS thumbnail, ID, post_title, post_name, SUBSTR(post_content, 20) AS content, post_date, t.name AS category

FROM ch_posts, ch_postmeta m

JOIN ch_term_relationships tr
JOIN ch_terms t ON t.term_id = tr.term_taxonomy_id 
JOIN ch_term_taxonomy tx ON tr.term_taxonomy_id = tx.term_taxonomy_id

WHERE post_status = 'publish'
AND post_author = $user_ID
AND post_type = 'product'
AND ch_posts.ID = m.post_id
AND m.meta_key =  '_thumbnail_id'
AND tr.object_id = ch_posts.ID
AND tx.taxonomy = 'product_cat'
");

然后

foreach ($results as $result) {     } 

由于我的帖子缺少“缩略图”记录,因此不会显示整个结果集。是否可以修改我的查询以显示找到的结果而忽略丢失的结果?或者用其他东西替换缺失值?

我尝试过使用CASE,但无济于事。

欢迎任何帮助

【问题讨论】:

  • 合并(列,ValueIfNull)
  • 如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
  • 有什么理由不使用 WP_Query?

标签: php mysql wordpress


【解决方案1】:

第一,您的查询不完整。显示整个查询。第二,您以错误的方式获取缩略图网址。第三,用于获取缩略图的表的连接不应该是内部的。获取 20 个带缩略图的最新帖子的示例(NULL 为无)

SELECT `posts`.`ID` AS `ID`, `posts`.`post_title` AS `title`, `posts`.`post_name` AS `slug`, `posts`.`post_content` AS `content`, `posts`.`post_excerpt` AS `excerpt`, `thumb_link` FROM `wp_posts` AS `posts`
LEFT JOIN (select `thumb`.`post_id` AS `object_id`, `thumbs_link`.`meta_value` AS `thumb_link` from `wp_postmeta` AS `thumb` 
LEFT JOIN`wp_postmeta` AS thumbs_link ON (`thumbs_link`.`post_id` = `thumb`.`meta_value`) 
AND `thumbs_link`.meta_key = "_wp_attached_file" WHERE `thumb`.`meta_key` = '_thumbnail_id' 
GROUP BY `thumb`.`post_id` ) AS `thumb`  ON `thumb`.`object_id` = `posts`.`ID`
WHERE `posts`.`post_status` = 'publish'
ORDER BY `posts`.`ID` DESC
LIMIT 20

【讨论】:

  • 抛开性能优势不谈,在没有任何聚合函数的情况下,GROUP BY 子句通常是不合适的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 2015-05-12
  • 1970-01-01
  • 2022-08-17
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多