Foros del Web » Programando para Internet » PHP »

Consultar varias tablas al mismo tiempo

Estas en el tema de Consultar varias tablas al mismo tiempo en el foro de PHP en Foros del Web. Hola. Tengo varias tablas y quisiera consultar los campos nombre y descripcion en todas las tablas al mismo tiempo. aaindex: es una de las tablas, ...
  #1 (permalink)  
Antiguo 13/12/2009, 08:01
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Consultar varias tablas al mismo tiempo

Hola. Tengo varias tablas y quisiera consultar los campos nombre y descripcion en todas las tablas al mismo tiempo.
aaindex: es una de las tablas, acciondisparos es otra de las tablas, pero faltan más tablas. Este código no me lo acepta:

Cita:
$busqueda = $_POST["busqueda"];
$query = "SELECT count(id) AS Total from aaindex,acciondisparos WHERE MATCH(nombre, descripcion) AGAINST ('$busqueda')";
  #2 (permalink)  
Antiguo 13/12/2009, 08:14
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: Consultar varias tablas al mismo tiempo

con un inner join

osea
$query="select count(id) from aaindex inner join acciondisparos on aaindex.id=acciondisparos=id"

prueba esa...
http://www. aulaclic.es/sql/t_3_1. htm
Une el link ahi hay informacion, espero te sea util...
  #3 (permalink)  
Antiguo 13/12/2009, 08:22
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Consultar varias tablas al mismo tiempo

Ok, explicame que tiene que ver esto con PHP????
Es un tema de PURO SQL!!!!

Código SQL:
Ver original
  1. SELECT
  2. tuTabla1.nombre, tuTabla1.descripcion
  3. tuTabla2.nombre, tuTabla2.descripcion
  4. tuTabla3.nombre, tuTabla3.descripcion
  5. tuTabla4.nombre, tuTabla4.descripcion
  6. tuTabla5.nombre, tuTabla5.descripcion
  7. FROM tuTabla1, tuTabla2,
  8. tuTabla3, tuTabla4, tuTabla5
  9. WHERE tuTabla1.tuColumna='$busqueda'
  10. AND tuTabla2.tuColumna='$busqueda'
  11. AND tuTabla3.tuColumna='$busqueda';

Si queres agregar o sacar filtros, saca o pone mas condiciones....

Última edición por jackson666; 13/12/2009 a las 08:31
  #4 (permalink)  
Antiguo 13/12/2009, 08:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Gracias Jackson666 y vitesse, si , es un tema de sql, pero siempre consulto php así que me he equivocado, gracias.
  #5 (permalink)  
Antiguo 13/12/2009, 09:02
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

No pude. Este es el código:
ARCHIVO BUSCAR.PHP
Cita:
<?php
$busqueda = $_POST["busqueda"];
$query = "SELECT count(id) AS Total from aaindex.nombre aaindex.descripcion, acciondisparos.nombre acciondisparos.descripcion WHERE MATCH(nombre, descripcion) AGAINST ('$busqueda')";
$row2=mysql_fetch_assoc(mysql_query($query));
$total_records = $row2['Total'];
?>
<div id="BusquedaGoogle" class="titulopaginacion">Se han encontrado<?php echo " ", $total_records, " "; ?>resultados de <?php echo " ", $busqueda, " en MiSitio!.com "; ?></div>
///ACA SIGUE CODIGO; PAGINA E IMPRIME REGISTROS
Me da un error:

Cita:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\misitio\buscar.php on line 82
  #6 (permalink)  
Antiguo 13/12/2009, 09:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consultar varias tablas al mismo tiempo

Verifica usando mysql_error() para detectar error en la consulta. Separa mysql_query en otra variable para que puedas lograrlo usando mysql_error().
Código PHP:
Ver original
  1. <?php
  2. $sql = "aqui va la consulta";
  3. $result = mysql_query($sql) or die(mysql_error());
  4. $row = mysql_fetch_assoc($result);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 13/12/2009, 09:11
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Consultar varias tablas al mismo tiempo

Si, ademas si ese es tu script, donde esta la conexion a la base??
Ejecutaste la consulta sola en phpmyadmin o en mysql query browser y no te anduvo o si?
  #8 (permalink)  
Antiguo 13/12/2009, 09:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

La conexion de la base está más arriba, ese no es el problema jackson, el problema es que no me toma las tablas
  #9 (permalink)  
Antiguo 13/12/2009, 09:21
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Consultar varias tablas al mismo tiempo

Cita:
Iniciado por principiantedelweb Ver Mensaje
La conexion de la base está más arriba, ese no es el problema jackson, el problema es que no me toma las tablas
Probaste con lo que te dijo @abimaelrc y la consulta que puse yo antes?
  #10 (permalink)  
Antiguo 13/12/2009, 09:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Este es el codigo que agregue:

Cita:
<?php
$busqueda = $_POST["busqueda"];
$query = "SELECT count(id) AS Total from aaindex.nombre aaindex.descripcion, acciondisparos.nombre, acciondisparos.descripcion WHERE MATCH(nombre, descripcion) AGAINST ('$busqueda')";
$result = mysql_query($query) or die(mysql_error());
$row2=mysql_fetch_assoc(mysql_query($query));
$total_records = $row2['Total'];
?>
Y este es el error que manda:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.descripcion, acciondisparos.nombre, acciondisparos.descripcion WHERE MATCH(nomb' at line 1
  #11 (permalink)  
Antiguo 13/12/2009, 09:31
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consultar varias tablas al mismo tiempo

Ok, con eso es facil detectar el error, si te fijas estas separando columnas pero en dos de ellas no separaste usando coma, verifica la consulta para que entiendas lo que te quiero decir.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 13/12/2009, 09:37
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Arregle la coma, pero ahora me tira:

Cita:
Table 'aaindex.nombre' doesn't exist
  #13 (permalink)  
Antiguo 13/12/2009, 09:39
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Y eso que ya hace una semana inclui en MySQL:

Cita:
ALTER TABLE aaindex ADD FULLTEXT(nombre, descripcion);
  #14 (permalink)  
Antiguo 13/12/2009, 09:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consultar varias tablas al mismo tiempo

Pero el error te lo dice claro, la tabla aaindex no existe, el problema es que se te olvido colocar el FROM.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 13/12/2009, 09:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

No entiendo, en la consulta está el from:

Cita:
$query = "SELECT count(id) AS Total from aaindex.nombre aaindex.descripcion, acciondisparos.nombre, acciondisparos.descripcion WHERE MATCH(nombre, descripcion) AGAINST ('$busqueda')";
  #16 (permalink)  
Antiguo 13/12/2009, 09:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

¿En qué parte dices que falta un "FROM"?
  #17 (permalink)  
Antiguo 13/12/2009, 09:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consultar varias tablas al mismo tiempo

Disculpa, leí mal el código, entonces, vamos por partes ¿qué se supone que es aaindex? Acuerdate que en la parte de FROM solo vas a indicar el nombre de la tabla no el nombre de las columnas, la parte donde llamas las columnas son despues del select y despues del where y tambien despues del ORDER BY pero no en el from.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #18 (permalink)  
Antiguo 13/12/2009, 09:58
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

aaindex es la tabla
  #19 (permalink)  
Antiguo 13/12/2009, 10:01
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Puse así:

Cita:
$query = "SELECT count(id) AS Total FROM aaindex, acciondisparos WHERE MATCH(aaindex.nombre, aaindex.descripcion, acciondisparos.nombre, acciondisparos.descripcion) AGAINST ('$busqueda')";
Y me tira el siguiente error:

Cita:
Column 'id' in field list is ambiguous
Lo que estoy tratando de hacer es contar los registros de cada tabla y que me los tire (un buscador de mi base de datos, tengo 35 tablas)
  #20 (permalink)  
Antiguo 13/12/2009, 10:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consultar varias tablas al mismo tiempo

Pues en la parte de FROM solo debe ir aaindex mas nada y si quieres mencionar otra tabla usa una coma y menciona solo el nombre de la otra tabla.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #21 (permalink)  
Antiguo 13/12/2009, 10:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Por favor Avimaelrc, fijate en el post 19 (el anterior al que contestaste por ultima vez), ahora me trae problemas con el id. Intenté

Cita:
$query = "SELECT count(aaindex.id, acciondisparos.id) AS Total FROM aaindex, acciondisparos WHERE MATCH(aaindex.nombre, aaindex.descripcion, acciondisparos.nombre, acciondisparos.descripcion) AGAINST ('$busqueda')";
Pero hay un error de sintaxis:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' acciondisparos.id) AS Total FROM aaindex, acciondisparos WHERE MATCH(aaindex.no' at line 1
  #22 (permalink)  
Antiguo 13/12/2009, 10:31
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Respuesta: Consultar varias tablas al mismo tiempo

count() acepta un solo campo. Puedes usar count(*) si quieres, dado que se cuenta filas.

Código:
$query = "SELECT count(*) AS Total FROM aaindex, acciondisparos WHERE MATCH(aaindex.nombre, aaindex.descripcion, acciondisparos.nombre, acciondisparos.descripcion) AGAINST ('$busqueda')";
  #23 (permalink)  
Antiguo 13/12/2009, 10:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Consultar varias tablas al mismo tiempo

Cada COUNT separalo, no uses el count una sola vez y con diferentes columnas. Y tambien tienes que hacer diferentes select, ejemplo
Código MySQL:
Ver original
  1. SELECT ((SELECT COUNT(*) FROM tabla1 WHERE... ) + (SELECT COUNT(*) FROM tabla2 WHERE... ) + (SELECT COUNT(*) FROM tabla3 WHERE... )) AS total
Mira aqui esta de donde saque la informacion http://www.forosdelweb.com/f86/selec...tablas-593021/

Edito:
Tambien lo que te sugiere claudiovega lo puedes hacer.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #24 (permalink)  
Antiguo 13/12/2009, 11:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Claudio Vega: Me pone
Cita:
Incorrect arguments to MATCH
Voy a intentar lo tuyo abimaelrc, a ver que pasa.
  #25 (permalink)  
Antiguo 13/12/2009, 11:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

No resulto. Parece que consultar varias tablas es más difícil de lo que pensaba.

Cita:
$busqueda = $_POST["busqueda"];
$query = "SELECT ((SELECT COUNT(id) FROM aaindex) + (SELECT COUNT(id) FROM acciondisparos)) AS Total WHERE MATCH(aaindex.nombre, aaindex.descripcion, acciondisparos.nombre, acciondisparos.descripcion) AGAINST ('$busqueda')";
$result = mysql_query($query) or die(mysql_error());
$row2=mysql_fetch_assoc(mysql_query($query));
$total_records = $row2['Total'];
El error es:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE MATCH(aaindex.nombre, aaindex.descripcion, acciondisparos.nombre, acciondi' at line 1
  #26 (permalink)  
Antiguo 13/12/2009, 12:54
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: Consultar varias tablas al mismo tiempo

Increible, un problema sin solucion en el campo de los número reales. Abrá que usar los "imaginarios/cion"
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 22:39.