2015-11-14 1 views
0

Я пытаюсь SELECT (все из нескольких) комментариев из Wordpress, которые относятся к сообщению (wp_comments.comment_content) с GROUP_CONCAT, но я хочу только выбрать те комментарии, которые НЕ содержат текстовая строка «status». Если комментариев вообще нет или только комментарии, содержащие «статус», я все еще хочу видеть эти записи в результате, просто не получив ничего для комментариев.Как фильтровать GROUP_CONCAT в моем SELECT

Когда я попытался поставить условие, подобное [WHERE wp_comments.comment_content NOT LIKE "% status%"] в конце полного запроса, записи, содержащие только комментарий, содержащий «статус», не отображают AT ALL, Мне все равно нужно получить эти записи, просто без комментариев.

Я хочу попробовать что-то вроде ниже, но это вызывает ошибку и вообще не выплевывает никаких данных. (Общий запрос работает, как ожидалось, отдельно от секции выбора комментариев ..).

Возможно, я вхожу в таблицу 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 

ответ

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 
Смежные вопросы