MySQL - Ayuda con consulta MySQL

 
Vista:
Imágen de perfil de sirakx
Val: 7
Ha disminuido su posición en 12 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta MySQL

Publicado por sirakx (4 intervenciones) el 16/04/2019 02:32:51
Buenas tardes a todos necesito ayuda para ver si se puede hacer lo que quiero, tengo 2 tablas.

tabla catalago_rentas

columnas: id, concepto, precio

y otro tabla rentas

columnas: id, id_catalago_rentas, fecha

y tengo esta consulta:

1
SELECT `cr`.`concepto`, COUNT(`c`.`id`) AS `renta` FROM `catalago_rentas` AS `cr` LEFT JOIN `rentas` AS `r` ON `cr`.`id` = `r`.`id_catalago_rentas` WHERE `r`.`id_catalago_rentas` > 0 AND `r`.`fecha` > 1541052000768 AND `r`.`fecha` < 1543644000768 GROUP BY `cr`.`id`

el detalle es que quiero que me retorne los 6 registros que hay en la tabla catalago_rentas aun que no haya registros en la tabla rentas en tal cazo si no hay registro que retorne 0 no se si no me funciona por que le hago el filtrado de la fecha. pero si me podrían ayudar muchas gracias!
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 joel
Val: 650
Plata
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta MySQL

Publicado por joel (231 intervenciones) el 16/04/2019 08:48:54
Hola, al hacer un GROUP BY ya no te funcionara!!!... yo lo haria así... ( no lo he podido probar... )

1
2
3
SELECT `cr`.`concepto`,`c`.`id`
FROM `catalago_rentas` AS `cr` LEFT JOIN `rentas` AS `r` ON `cr`.`id` = `r`.`id_catalago_rentas`
WHERE `r`.`id_catalago_rentas` > 0 AND `r`.`fecha` > 1541052000768 AND `r`.`fecha` < 1543644000768

De esta manera,debería de devolverte NULL si no hay vinculación entre las dos tablas.
Si es así, luego se puede poner un if() para que te devuelve 0 si es null

Me puedes confirmar si te funciona?
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
Imágen de perfil de sirakx
Val: 7
Ha disminuido su posición en 12 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta MySQL

Publicado por sirakx (4 intervenciones) el 17/04/2019 05:17:19
no me funciono no me regresan datos null, pero igualmente no me sirve que me devuelva todos los registros por que seria una consulta muy pesada. gracias por tu respuesta,
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
Imágen de perfil de Vega
Val: 69
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta MySQL

Publicado por Vega (30 intervenciones) el 17/04/2019 10:59:15
La cláusula WHERE te puede estar quitando los registros con null que esperas ver.
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
Imágen de perfil de sirakx
Val: 7
Ha disminuido su posición en 12 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta MySQL

Publicado por sirakx (4 intervenciones) el 18/04/2019 19:44:59
Gracias por tu respuesta, el detalle es que no hay ningún registro null, solo quiero que aparezca un forzoso 0, no se si se pueda?
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
Imágen de perfil de Vega
Val: 69
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta MySQL

Publicado por Vega (30 intervenciones) el 18/04/2019 20:56:33
si, seguro que se puede, pero si me podrías ayudar con unos datos de ejemplo con los que construirte una maqueta.

prodrías enmaquetarlo con unos conjuntos con una CTE al estilo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
with catalago_rentas AS (
select 1 as id, y1 as concepto
union
select 2, y2
union
select 3, y3
),
rentas as (
select 1 as id_catalago_rentas, {fecha1} as fecha
union
select 2 , {fecha2}
union
select 3 , {fecha3}
union
select 4 , {fecha4}
)
SELECT `cr`.`concepto`, COUNT(`c`.`id`) AS `renta`
FROM `catalago_rentas` AS `cr`
LEFT JOIN `rentas` AS `r` ON `cr`.`id` = `r`.`id_catalago_rentas`
WHERE `r`.`id_catalago_rentas` > 0
AND `r`.`fecha` > 1541052000768
AND `r`.`fecha` < 1543644000768
GROUP BY `cr`.`id`

y por cierto, que es C.id en COUNT(`c`.`id`) ?
ese alias no existe en la consulta de tu post inicial.
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 sirakx
Val: 7
Ha disminuido su posición en 12 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta MySQL

Publicado por sirakx (4 intervenciones) el 18/04/2019 23:39:44
ES `r` en vez de `c` error de dedo una disculpa gracias por tu respuesta
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