SQL - Consulta de dos tablas complicada

   
Vista:

Consulta de dos tablas complicada

Publicado por juanma santosrua@yahoo.es (3 intervenciones) el 05/12/2012 21:22:34
Hola a todos!!
Esta es mi primera vez.... que ilusión, en este foro, he acudido a otros buscando una respuesta pero los de los otros foros seguro que no son tan makinas como en este!!! (arengando fuerte ahí)

Lo que estoy intentando hacer es una consulta a dos tablas, una de posts y otra de comentarios de los posts, y me gustaría obtener los datos de ambas y ordenaditos por fecha y post_id, os clarifico:

LO QUE TENGO

tabla 1 Posts


post_id - author_id - body - created_time - object_id - author_name
1 - 1215834998 - Primero -- 2012-12-01 19:13:09 -- 111812165504902 - Juanma
2 - 1215834998 - Segundo -- 2012-12-03 13:28:15 -- 111812165504902 - Juanma
3 - 1215834998 - Tercero -- 2012-12-05 20:25:53 -- 111812165504902 - Juanma
4 - 1215834998 - cuarto -- 2012-12-05 20:26:06 -- 111812165504902 - Juanma
5 - 1215834998 - quinto -- 2012-12-05 20:26:16 -- 111812165504902 - Juanma

tabla 2 Comments

post_id - fromid - text - time - username
1 - 1215834998 - primero de primero -- 2012-12-05 20:26:57 -- Juanma
2 - 1215834998 - segundo de primero -- 2012-12-05 20:27:42 -- Juanma
3 - 1215834998 - primero de segundo -- 2012-12-05 20:28:06 -- Juanma
4 - 1215834998 - primero de tercero -- 2012-12-05 20:28:36 -- Juanma

LA IDIOTEZ QUE INTENTO

Lo que estoy intentando es obtener una tabla que me devuelva todos los posts con sus respectivos comentarios, preferiblemente ordenados por fecha y esas cositas que lo hacen ma mejón

SELECT * FROM postwou LEFTJOIN comment ON postwou.post_id=comment.post_id WHERE postwou.object_id=" . $object_id

LA FRICADA QUE ME DEVUELVE

[{"post_id":"1","author_id":"1215834998","body":"Primero","created_time":"2012-12-01 19:13:09","object_id":"","author_name":"Juanma","fromid":"1215834998","text":"Primero de primero","time":"2012-12-05 20:26:57","username":"Juanma"},

{"post_id":"1","author_id":"1215834998","body":"Primero","created_time":"2012-12-01 19:13:09","object_id":"","author_name":"Juanma","fromid":"1215834998","text":"segundo de primero","time":"2012-12-05 20:27:42","username":"Juanma"},

{"post_id":"2","author_id":"1215834998","body":"Segundo","created_time":"2012-12-03 13:28:15","object_id":"","author_name":"Juanma","fromid":"1215834998","text":"primero de segundo","time":"2012-12-05 20:28:06","username":"Juanma"},

{"post_id":"3","author_id":"1215834998","body":"Tercero","created_time":"2012-12-05 20:25:53","object_id":"","author_name":"Juanma","fromid":"1215834998","text":"primero de tercero","time":"2012-12-05 20:28:36","username":"Juanma"},

{"post_id":null,"author_id":"1215834998","body":"cuarto","created_time":"2012-12-05 20:26:06","object_id":null,"author_name":"Juanma","fromid":null,"text":null,"time":null,"username":null},

{"post_id":null,"author_id":"1215834998","body":"quinto","created_time":"2012-12-05 20:26:16","object_id":null,"author_name":"Juanma","fromid":null,"text":null,"time":null,"username":null}]

LO QUE NECESITO

Aquellos posts que tienen comentarios hechos viene con su post_id, son los casos del 1, 2 y 3, pero los post_id de los que no tienen comentarios no me sale casos 4 y 5


Muchas gracias a aquellos que sepan contestar a este pobre ignorante, ya se que es muy sencillo, pero es que estoy pegadisimo en SQL.

Un saludo a todos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Consulta de dos tablas complicada

Publicado por xve (237 intervenciones) el 05/12/2012 22:03:06
Hola Juanma, no me queda clara tu pregunta, pero entiendo que no quieres que te aparezcan los registros que no tienen comentarios... es así?

No comentas que tipo de base de datos estas utilizando, pero por ejemplo en MySQL podría ser:

1
2
SELECT * FROM postwou LEFT JOIN comment ON postwou.post_id=comment.post_id
WHERE postwou.object_id=" . $object_id AND fromid is not null


Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de dos tablas complicada

Publicado por juanma santosrua@yahoo.es (3 intervenciones) el 05/12/2012 22:36:05
Hola xve,
La base de datos es MYSQL, y si quiero que salgan todos los registros de post en donde object_id, el problema es que los registros que NO tienen comentarios pierden el post_id y no entiendo porqué.

Los dos últimos registros que cito son :
{"post_id":null,"author_id":"1215834998","body":"cuarto","created_time":"2012-12-05 20:26:06","object_id":null,"author_name":"Juanma","fromid":null,"text":null,"time":null,"username":null},

{"post_id":null,"author_id":"1215834998","body":"quinto","created_time":"2012-12-05 20:26:16","object_id":null,"author_name":"Juanma","fromid":null,"text":null,"time":null,"username":null}]

fijate en el null del post_id, en realidad existen en la tabla de post (postwou), respectivamente 4 y 5, pero al mezclar los valores de ambas tablas aparece null, no se si es que hace una comparación entre tablas o algo así, porque precisamente es la única columna que comparte nombre en las dos tablas, ¿tendrá eso algo que ver? Y si es así, como hago entonces para cotejar los registros de las tablas?

Muchas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de dos tablas complicada

Publicado por juanma (3 intervenciones) el 06/12/2012 11:20:07
La respuesta es:

SELECT P.post_id, P.author_id, P.body, P.created_time, P.object_id, P.author_name, C.fromid, C.text, C.time, C.username FROM postwou P LEFT JOIN comment C ON P.post_id=C.post_id WHERE P.object_id=" . $object_id

para el que quiera saberlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Consulta de dos tablas complicada

Publicado por xve (237 intervenciones) el 06/12/2012 20:27:24
Gracias por comentarlo Juanma!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar