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

SELECT count (*) varias tablas

Estas en el tema de SELECT count (*) varias tablas en el foro de Mysql en Foros del Web. Hola. Quería saber si alguien podría resolverme una consulta. Quiero contar el número de registros de un total de 24 tablas que tienen la misma ...
  #1 (permalink)  
Antiguo 03/06/2008, 14:39
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 16 años, 6 meses
Puntos: 0
SELECT count (*) varias tablas

Hola. Quería saber si alguien podría resolverme una consulta. Quiero contar el número de registros de un total de 24 tablas que tienen la misma estructura, número de campos y tipo de datos, aunque sus campos se llaman de manera distinta en cada tabla. Al mismo tiempo quiero filtrar y coger sólo los que cumplen una condición con 'WHERE'.

He probado esta estructura:

____________________________________
(
SELECT count(*)
FROM Tabla1
WHERE Tabla1Campo1 ='si'
)
UNION
(
SELECT count(*)
FROM Tabla2
WHERE Tabla2Campo1 ='si'
)
UNION
(
.
.
.
)
UNION
(
SELECT count(*)
FROM Tabla24
WHERE Tabla24Campo1 ='si'
)
__________________________________

La respuesta correcta, contada directamente en la base de datos, es de 10 registros en el momento de consultar. Se ejecuta correctamente, pero me da como respuesta una tabla con 3 registros:

____________________________________
Count(*)
2
0
1
____________________________________

cuando yo necesito meter en una variable el número 10. ¿Alguien sabe como hacerlo?

Gracias de antemano.
  #2 (permalink)  
Antiguo 03/06/2008, 15:24
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: SELECT count (*) varias tablas

Saludos.

Y si realizas todo dentro del mismo select como por ejemplo

Cita:
SELECT count(Tabla1Campo1)
from (((Tabla1 INNER JOIN Tabla2 ON Tabla1Campo1=Tabla2Campo1)
Tabla2 INNER JOIN Tabla3 ON Tabla2Campo1=Tabla3Campo1)
Tabla3 INNER JOIN Tabla4 ON Tabla3Campo1=Tabla4Campo1)
WHERE Tabla1Campo1 ='si' GROUP BY......
y asi sucesivamente........
mmm toca hacerle unos ajustes al query pero te doy una idea de como podrias realizarlo. Tal vez de esta forma si te pueda funcionar.

Hasta Pronto
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 03/06/2008, 22:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: SELECT count (*) varias tablas

Si sólo quieres sacar el total, podrías probar esto (te he puesto un ejemplo con solo tres tablas)
SELECT ((SELECT COUNT(*) FROM tabla1 WHERE... ) + (SELECT COUNT(*) FROM tabla2 WHERE... ) + (SELECT COUNT(*) FROM tabla3 WHERE... )) AS total
  #4 (permalink)  
Antiguo 04/06/2008, 01:12
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: SELECT count (*) varias tablas

Esta última solución de jurena me funciona perfectamente. No conocía que se pudiera sumar directamente con '+'.
Muchas gracias.
  #5 (permalink)  
Antiguo 04/06/2008, 01:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: SELECT count (*) varias tablas

Claro que se puede. Tú puedes hacer esto SELECT 4+5 as suma. Pruébalo y verás. También puede usarse la resta con -. Lo que he hecho ha sido sumar los resultados de las distintas tablas (en este caso, un dato por tabla) que se cargan como una línea y mostrarlos como suma. Esto no me permite, tal cual está, sacar más que un dato, dato que no procede de ninguna tabla, sino de la suma de los datos de otras tablas.
  #6 (permalink)  
Antiguo 04/06/2008, 13:17
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: SELECT count (*) varias tablas

Yo tampoco sabia que se podia sacar de esta forma.. Gracias jurena
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #7 (permalink)  
Antiguo 04/06/2008, 13:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: SELECT count (*) varias tablas

Gracias a ti, Nano_, pero, si te soy sincero, no sé si habrá alguna otra solución para lo mismo y, si la hay (probablemente la habrá), cuál de ellas ofrecerá mejor rendimiento.
  #8 (permalink)  
Antiguo 04/06/2008, 13:46
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: SELECT count (*) varias tablas

Ahora que funciona esta consulta y otra anterior que saca datos de varias tablas, quería saber si es correcto en PHP llamar con una variable a una consulta utilizando los alias de los campos. La consulta es la siguiente:

__________________________________________________ ___

(
SELECT Tabla1Campo1 as referencia, Tabla1Campo2 as data, Tabla1Campo3 as titulo
FROM Tabla1
WHERE Tabla1Campo6 ='si'
)
UNION
(
SELECT Tabla2Campo1, Tabla2Campo2, Tabla2Campo3
FROM Tabla2
WHERE Tabla2Campo6 ='si'
)
UNION
(
.
etc
.
)
__________________________________________________ ___


Como se ve, el primer SELECT asigna alias a los campos. Esta consulta la he probado en MySQL y funciona perfectamente, poniendo a los nombres de los campos los alias que yo le he dado, cuando se visualiza el resultado. Tras esto quiero utilizar referencias a estos campos en PHP, como por ejemplo así:

$referencia = $row_listados['referencia']

pongo un ejemplo de una línea cualquiera, aunque se entiende que $row_listados está definida antes.

Estoy modificando un código ya existente. En el anterior, la consulta era sencilla y las variables almacenaban el nombre del campo real de la BB.DD. Como mi consulta es nueva, ahora no puedo utilizar nombres de campos reales, sino los alias.

¿Es posible utilizar expresiones como la anterior?

Gracias
  #9 (permalink)  
Antiguo 04/06/2008, 13:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: SELECT count (*) varias tablas

Esto te lo responderán mejor en el foro PHP. Traslada allí la pregunta para obtener la información contrastada. Pero, por lo que se refiere a MySQL, te diré que sí, que el alias funciona como nombre de campo, pero sólo cuando cargas los datos con mysql_fetch_assoc o mysql_fetch_array (que cargan arrays de tipo asociativo). Por supuesto, no lo intentes con mysql_fetch_row, pues carga los datos en un array escalar y sólo responde a $array[0], $array[1], etc. Y en el caso de UNION creo que aunque los nombres de campos sean distintos, la union tomará como nombre de campo el nombre o alias del campo de la primera selección.
  #10 (permalink)  
Antiguo 17/11/2009, 12:57
Avatar de dbspace  
Fecha de Ingreso: octubre-2009
Mensajes: 6
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: SELECT count (*) varias tablas

Estoy en el mismo problema... pero mi situacion es la sencilla....

Necesito unicamente el resultado del SELECT COUNT en una variables....

Es Decir un numero entero para despues hacer graficas.... pero no veo en que me estoy equivocando para obtener este resultado.

-------------------------------------

$dbh=mysql_connect ("", "", "") or die ('problema conectando porque :' . mysql_error());
mysql_select_db ("BDINT",$dbh);
$h="SELECT COUNT(id_operacion) FROM .t_en WHERE id_operacion = 'areri' and fecha_i between '2009-10-25' and '2009-11-30';";
$tabla2= mysql_query($h, $dbh) or die ("problema con query");


echo $tabla2; // Necesito el valor de $tabla2 en una varible para despues graficarla.



------------------------------------------


No se en que momento no me toma el valor entero del count y lo asigna en la varible :(

HELP ya no veo la solucion
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 16:25.