Vamos a ver si se entiende y queda claro que lo que hace el LEFT JOIN es precisamente mosrtar las cosas como tu quieres, por lo que resulta difícil comprender cuál es tu problema...
Supongamos que tenemos estas dos tablas:
Código MySQL:
Ver original+----------+------+
| id_posts | post |
+----------+------+
| 1 | post |
| 2 | post |
| 3 | post |
| 4 | post |
| 5 | post |
| 6 | post |
+----------+------+
+----------------+----------+------------+
| id_comentarios | id_posts | comentario |
+----------------+----------+------------+
| 1 | 2 | comentario |
| 2 | 2 | comentario |
| 3 | 3 | comentario |
| 4 | 5 | comentario |
| 5 | 4 | comentario |
+----------------+----------+------------+
SI yo hago un LEFT JOIN entre ambas, obtengo:
Código MySQL:
Ver original+----------+------+----------------+----------+------------+
| id_posts | post | id_comentarios | id_posts | comentario |
+----------+------+----------------+----------+------------+
| 2 | post | 1 | 2 | comentario |
| 2 | post | 2 | 2 | comentario |
| 3 | post | 3 | 3 | comentario |
| 4 | post | 5 | 4 | comentario |
| 5 | post | 4 | 5 | comentario |
+----------+------+----------------+----------+------------+
Como puedes ver, los ID de los posts en la primera tabla salieron
todos, sin excepciones. Lo único que sale NULL es aquella columna de la segunda tabla donde no hay comentarios relacionados,
lo que incluye el id_posts de esa tabla, pero eso es normal.
Si quiero evitar que esa columna me traiga problemas, simplemente tengo que invocarlas una a una:
Código MySQL:
Ver originalmysql
> SELECT P.id_posts
, P.post
, C.id_comentarios
, C.comentario
+----------+------+----------------+------------+
| id_posts | post | id_comentarios | comentario |
+----------+------+----------------+------------+
| 2 | post | 1 | comentario |
| 2 | post | 2 | comentario |
| 3 | post | 3 | comentario |
| 4 | post | 5 | comentario |
| 5 | post | 4 | comentario |
+----------+------+----------------+------------+
Ahora bien, hay dos cosas a considerar:
1) En el LEFT JOIN el orden de las tablas si altera el producto. En tu caso debes poner
siempre la tabla que contiene los posts a la izquierda, puesto que si las inviertes el resultado es completamente distinto:
Código MySQL:
Ver original+----------------+----------+------------+----------+------+
| id_comentarios | id_posts | comentario | id_posts | post |
+----------------+----------+------------+----------+------+
| 1 | 2 | comentario | 2 | post |
| 2 | 2 | comentario | 2 | post |
| 3 | 3 | comentario | 3 | post |
| 4 | 5 | comentario | 5 | post |
| 5 | 4 | comentario | 4 | post |
+----------------+----------+------------+----------+------+
2) No sabemos qué es lo que evalúa esto:
y esa condición afecta el resultado completo, pudiendo evitar que ciertos registros salgan en el resultado. Podría ser esa la causa de tu problema, pero desde nuesrta óptica, es imposible de saber (no es nuestra base, ni son nuestros datos).