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

Sumar dos count

Estas en el tema de Sumar dos count en el foro de Mysql en Foros del Web. Hola compañeros, teniendo esta consulta Código PHP: SELECT  ( SELECT COUNT ( slug )  FROM articulos WHERE slug  =  "cadiz" ) AS  n1 , ( SELECT COUNT ( slug )  FROM provincias WHERE slug  =  ...
  #1 (permalink)  
Antiguo 09/08/2012, 16:49
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Sumar dos count

Hola compañeros,

teniendo esta consulta
Código PHP:
SELECT (SELECT COUNT(slugFROM articulos WHERE slug "cadiz") AS n1, (SELECT COUNT(slugFROM provincias WHERE slug "cadiz") AS n2 
¿como puedo obtener solamente la suma de ambos? no lo consigo y la documentación del sum que encuentro es super escasa.

Un saludo y gracias
  #2 (permalink)  
Antiguo 09/08/2012, 17:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sumar dos count

No es cierto que no haya documentación, pero para poder aplicar los SUM, primero la consulta tiene que tener algún sentido, y lo que propones no parece ser el caso
Primero definenos qué relación hay entre ambas tablas, luego ver cómo obtener la suma, o si la suma tiene alguna coherencia, o cómo hay que hacer.
Lo que parece es esto:
Código MySQL:
Ver original
  1. SELECT COUNT(A.slug) CountArt, COUNT(A.slug)
  2. FROM articulos A LEFT JOIN provincias P ON A.slug = P.slug
  3. WHERE A.slug = "cadiz";
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/08/2012, 17:57
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Sumar dos count

Hola gnzsoloyo,

referente a la documentación del sum no afirmo que no haya, simplemente que la que encuentro es escasa http://dev.mysql.com/doc/refman/5.0/...l#function_sum

No existen relacion entre las tablas pero te explico lo que quiero obtener; en esas dos tablas existe un campo llamado slug y quiero obtener la suma del número de veces que se encuentran en ambas, es decir, si la tabla artículos hay 1 slug que sea "cadiz" y en la tabla provincias hay 3, obtener 4. Es para un sistema de creación de slugs para que nunca se repitan.
  #4 (permalink)  
Antiguo 09/08/2012, 19:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sumar dos count

Pues si no tienen relación, es innecesario y contraproducente hacer una sola consulta para obtener ambos datos.
Es mejor hacer dos consultas.
Es contraproducente porque te arriesgas a generar productos cartesianos, y es innecesario, porque crearlas como consultas independientes es suficiente para obtener la información.
El planteo que haces es como tratar de combinar caballos y manzanas... No los mezcles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 10/08/2012, 02:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Sumar dos count

erxaca,
aunque estoy básicamente de acuerdo con gnzsoloyo, te diré que si lo que quieres es la suma de los valores en esas dos tablas en una sola consulta, puedes probar con esta, que, como ves, se trata de una subconsulta:
Código MySQL:
Ver original
  1. SELECT SUM(T1.sumaslug) totalslugciudad FROM
  2.  (SELECT count(slug) sumaslug
  3.      FROM `provincias` WHERE slug = "Cádiz"
  4.   SELECT count(slug)
  5.       FROM articulos WHERE slug = "Cádiz") T1

Última edición por jurena; 10/08/2012 a las 07:36
  #6 (permalink)  
Antiguo 10/08/2012, 14:36
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Sumar dos count

Gracias a ambos por vuestro tiempo y ayuda ;)

gnzsoloyo pensé que realizar la suma con una sola consulta sería más rápido que obteniendo ambas por separado y sumándolas con PHP, lo he comprobado y así es, es más rápido con una sola consulta, la que ha propuesto jurena.

Un saludo ;)
  #7 (permalink)  
Antiguo 10/08/2012, 18:16
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Sumar dos count

Otra preguntilla que tenía hace tiempo, vosotros que sois expertos en este área, ¿es más eficiente o recomendable crear los alias con el "AS" o sin él? si por ejemplo el uso del "AS" es una técnica en desuso y cosas similares. Normalmente acostumbro usarlo por facilitar la lectura de la consulta.
  #8 (permalink)  
Antiguo 12/08/2012, 02:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Sumar dos count

erxaca,
si quieres una respuesta a un tema distinto, debes abrir un nuevo post para ello. Aquí no entrará mucha gente a ayudar si sabe que el tema ya está resuelto.
Te responderé, no obstante, con una cita de gnzsoloyo, pues yo carezco de conocimientos técnicos para ofrecerte esa ayuda:
Cita:
Un tip adicional: la cláusula AS es obsoleta. Ya ni siquiera el Oracle 8i la usaba (y va por la versión 12), porque se eliminó del ANSI-SQL hace años. Solamente se conserva por compatibilidad cuando usas motores de bases de datos extremadamente viejos y obsoletos.
  #9 (permalink)  
Antiguo 12/08/2012, 17:04
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Sumar dos count

Gracias jurena por la info. Una pena pues el AS hace más fácil reconocer que se trata de un alias ;)

Un saludo
  #10 (permalink)  
Antiguo 12/08/2012, 17:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sumar dos count

Cita:
Gracias jurena por la info. Una pena pues el AS hace más fácil reconocer que se trata de un alias ;)
En realidad, no aporta nada, porque lo que determina que es un alias es que está después del nombre de la columna, o de la función aplicada en esa columna del select.
Ten en cuenta que el uso del AS no lo vas a encontrar cuando trabajes en desarrollos avanzados, sea para una empresa o privadamente, porque la mayor parte de los desarrolladores avanzados no lo usa.
Ocasionalmente aparece cuando la consulta es desarrollada por alguna aplicación (asistentes de consulta), y eso porque entra en lo antes dicho: Compatibilidad hacia versiones viejas.
Una vez que has aprendido a hacer consultas mas o menos avanzadas, simplemente no los usas, porque uno trata de hacer código eficiente. Y el AS no tiene lugar allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: count, select
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 00:38.