Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Lógica optimizada para consultas subconsultas MySQL php

Estas en el tema de Lógica optimizada para consultas subconsultas MySQL php en el foro de Mysql en Foros del Web. Hola buenas, una consulta, tengo 2 tablas, una que se llama trabajos y otra comentarios, cada trabajo tendrá comentarios , habrá dos usuarios A y ...
  #1 (permalink)  
Antiguo 01/09/2017, 14:44
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 14 años, 5 meses
Puntos: 5
Lógica optimizada para consultas subconsultas MySQL php

Hola buenas, una consulta, tengo 2 tablas, una que se llama trabajos y otra comentarios, cada trabajo tendrá comentarios , habrá dos usuarios A y B, el usuario B escribirá comentarios y el usuario A al ver el listado de trabajos, verá la cantidad de comentarios no leídos... Como seria la manera más óptima de por cada registro de trabajo saber la cantidad de comentarios no leídos,
De por si, al guardar un comentario, se establece el valor 1 (no leido)

Una opcion es traer todos los trabajos . Almacenar en un Array y hacer otra query con group by por id trabajo en "comentarios" y sumar los 1. Antes recorro con un foreach los trabajos y sería algo tardío...

Otra opción es que al guardar un comentario verifique los no leídos de la tabla comentarios y los sume al ingresado asi actualizaría un campo "noleidos" en la tabla A de trabajos, no usaría tantos recursos....
  #2 (permalink)  
Antiguo 01/09/2017, 14:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Lógica optimizada para consultas subconsultas MySQL php

y porque un array? sabias que una tabla es un array? Lo mas optimo para una consulta asi seria hacer un join entre las 2 tablas donde la bandera de comentarios sea igual a
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 01/09/2017, 23:31
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 14 años, 5 meses
Puntos: 5
Respuesta: Lógica optimizada para consultas subconsultas MySQL php

Como seria ese join. Por qué los comentarios noleidos no me los tiene en un campo. Debería hacer una query para que por determinado ID, traiga un count de los no leídos... Osea como una subconsulta parte por cada registro de una tabla haría esa consulta . Y haría join con esa tabla que es una subconsulta ...
  #4 (permalink)  
Antiguo 03/09/2017, 08:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Lógica optimizada para consultas subconsultas MySQL php

No entiendo tu explicacion, pon un ejemplo de tus datos y tus tablas, y cual es el resultado esperado
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 05/09/2017, 01:21
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Lógica optimizada para consultas subconsultas MySQL php

Saludo

Lo más práctico sería, en efecto, hacer una subconsulta
en la consulta inicial de la lista de trabajos,
donde mire la tabla comentarios y traiga el count de los no leidos teniendo en cuenta obviamente el id del trabajo.

Así entonces, puedes agregarlo al query actual del
listado de trabajos y ya con eso a la hora de recorrerlos
con el foreach simplemente muestras el resultado de la subconsulta.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: php, subconsultas, tabla, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:18.