2015-04-24 9 views
5

Salve, prima di tutto, non sono così esperto nelle query mysql. Ho tavoli traino wp_posts e wp_wti_like_post e sto facendo LEFT JOIN su wp_wti_like_post ON wp_posts.ID = wp_wti_like_post.post_id e SUM(wp_wti_like_post.value) < 2 ma se c'è no row in wp_wti_like_post con id del post dal wp_posts allora non mostra nemmeno la riga dalla wp_posts e semplicemente la ignorano, si prega di aiutare in questo ne ho davvero bisogno.Query Mysql che ignora la riga se la riga figlio da sinistra non è presente nella tabella di join

query:

SELECT * 
FROM wp_posts 
LEFT JOIN wp_wti_like_post ON wp_posts.ID = wp_wti_like_post.post_id 
WHERE wp_posts.post_status = 'publish' 
GROUP BY wp_wti_like_post.post_id 
HAVING SUM(wp_wti_like_post.value) <2 
OR SUM(wp_wti_like_post.value) = NULL 
LIMIT 0 , 200 

tavolo wp_wti_like_post

http://prntscr.com/6xixrd

tavolo wp_posts

http://prntscr.com/6xixzp

+0

naturalmente l'ignora . stai implicitamente scegliendo solo le righe in cui 'wp_wti_like_post' ha un valore nelle tue clausole' having' e 'group'. –

+0

@pala_ fa ancora la stessa cosa, ignora la riga se la riga all'interno di wp_wti_like_post non esiste –

+0

@pala_ quindi quale può essere la soluzione? questo è quello che sto avendo problemi, –

risposta

0

Così ho risolto questa situazione con la mia auto e andare a farlo funzionare in questo modo

nel luogo di

SUM(wp_wti_like_post.value) = NULL 

dovrebbe bisogno di essere

SUM(wp_wti_like_post.value) IS NULL 
0

Potrebbe essere necessario ristrutturare la vostra query come segue:

SELECT * FROM 
(
    SELECT WP.*, SUM(LP.value) AS `value` 
    FROM wp_posts WP 
    LEFT JOIN 
     (SELECT post_id FROM wp_wti_like_post WHERE post_status = 'publish') LP 
     ON WP.ID = LP.post_id 
    GROUP BY WP.ID 
) T1 
WHERE T1.value IS NULL 
OR T1.value < 2; 

La query Inner-most innanzitutto recupera solo wti_like_posts che sono stati pubblicati.

Viene quindi eseguito il join sinistro, che fornirà il risultato previsto del recupero di tutte le righe da wp_posts, anche se non si uniscono a un record della subquery.

Dopo che viene eseguito, l'istruzione GROUP esegue il calcolo di SUMming dei valori.

La query più esterna applica il requisito che la somma deve essere inferiore a 2 o essere nullo.

Problemi correlati