如何在SELECT中过滤GROUP_CONCAT

时间:2015-11-14 21:30:21

标签: mysql group-concat

我正在尝试从Wordpress中选择SELECT(所有多个)与GROUP_CONCAT相关的帖子(wp_comments.comment_content),但我只想选择那些不包含文本字符串“status”的注释。如果根本没有评论,或者只有包含“状态”的评论,我仍然希望在结果中看到这些记录,只是没有得到任何回复评论

当我在完整查询结束时尝试设置类似于[WHERE wp_comments.comment_content NOT LIKE“%status%”]的条件时,只有包含“status”的注释的记录不显示AT ALL,I仍然需要获取这些记录,只是没有评论。

我想尝试类似以下版本的内容,但这会引发错误并且根本不会吐出任何数据。 (除了注释选择部分之外,整体查询按预期工作。)。

也许我在错误的地方加入了wp_comments表,使用了错误的连接,没有使用格式正确的嵌套SELECT或类似的东西,也许它最后需要一个单独的SELECT所以我可以在这种方式不会影响整体选择哪些记录..不确定..

知道我做错了什么或如何解决这个问题?

这是我的查询,提前感谢任何类型的指针!

select wp_woocommerce_order_itemmeta.meta_value as firstwoometavalue, 
wp_postmeta.meta_value as firstwpmetavalue, Y.meta_value as ymetavalue, 
Z.meta_value as zmetavalue, X.meta_value as xmetavalue, 
(GROUP_CONCAT(wp_comments.comment_content) as commentcontent 
WHERE wp_comments.comment_type = "order_note" AND 
wp_comments.comment_content NOT LIKE "%status%")
FROM wp_postmeta 
left JOIN wp_postmeta as Y
ON wp_postmeta.post_id = Y.post_id
left JOIN wp_posts
ON wp_postmeta.post_id = wp_posts.ID
left JOIN wp_woocommerce_order_items
ON wp_woocommerce_order_items.order_id = wp_posts.ID
left JOIN wp_woocommerce_order_itemmeta
ON wp_woocommerce_order_itemmeta.order_item_id = wp_woocommerce_order_items.order_item_id
left JOIN wp_woocommerce_order_itemmeta as Z
ON wp_woocommerce_order_itemmeta.order_item_id = Z.order_item_id
left JOIN wp_woocommerce_order_itemmeta as X
ON wp_woocommerce_order_itemmeta.order_item_id = X.order_item_id
left JOIN wp_comments
ON wp_comments.comment_post_ID = wp_posts.ID
where 1=1
AND wp_woocommerce_order_itemmeta.meta_key ="Adults"
AND wp_postmeta.meta_key ="_billing_first_name"
AND Y.meta_key ="_billing_last_name"
AND Z.meta_key ="Booking Type"
AND Z.meta_value LIKE "%'.$showlocation.'%"
AND X.meta_key ="Booking Date"
AND X.meta_value = "'.$showdate.'"
AND wp_posts.post_status ="wc-completed" 
GROUP BY wp_posts.ID

1 个答案:

答案 0 :(得分:0)

这有效

 SELECT 
wp_woocommerce_order_itemmeta.meta_value AS Adults,
wp_postmeta.meta_value AS FirstName,
jn_postmeta_lastname.meta_value AS LastName,
jn_woocommerce_order_itemmeta_location.meta_value AS Location,
jn_woocommerce_order_itemmeta_date.meta_value AS ShowDate,
(SELECT 
        GROUP_CONCAT(wp_comments.comment_content)
    FROM
        wp_comments
    WHERE
        wp_comments.comment_content NOT LIKE '%status%'
            AND wp_comments.comment_post_ID = wp_posts.ID) Notes
 FROM
wp_postmeta
    LEFT JOIN
wp_postmeta AS jn_postmeta_lastname ON wp_postmeta.post_id = jn_postmeta_lastname.post_id
    LEFT JOIN
wp_posts ON wp_postmeta.post_id = wp_posts.ID
    LEFT JOIN
wp_woocommerce_order_items ON wp_woocommerce_order_items.order_id = wp_posts.ID
    LEFT JOIN
wp_woocommerce_order_itemmeta ON wp_woocommerce_order_itemmeta.order_item_id = wp_woocommerce_order_items.order_item_id
    LEFT JOIN
wp_woocommerce_order_itemmeta AS jn_woocommerce_order_itemmeta_location ON wp_woocommerce_order_itemmeta.order_item_id = jn_woocommerce_order_itemmeta_location.order_item_id
    LEFT JOIN
wp_woocommerce_order_itemmeta AS jn_woocommerce_order_itemmeta_date ON wp_woocommerce_order_itemmeta.order_item_id = jn_woocommerce_order_itemmeta_date.order_item_id
    LEFT JOIN
wp_comments ON wp_comments.comment_post_ID = wp_posts.ID
WHERE
1 = 1
    AND (wp_postmeta.meta_key = '_billing_first_name'
    AND jn_postmeta_lastname.meta_key = '_billing_last_name'
    AND wp_woocommerce_order_itemmeta.meta_key = 'Adults'
    AND jn_woocommerce_order_itemmeta_location.meta_key = 'Booking Type'
    AND jn_woocommerce_order_itemmeta_location.meta_value LIKE "%'.$showlocation.'%"
    AND jn_woocommerce_order_itemmeta_date.meta_key = 'Booking Date'
    AND jn_woocommerce_order_itemmeta_date.meta_value = "'.$showdate.'"
    AND wp_posts.post_status = 'wc-completed'
GROUP BY wp_posts.ID