Foros del Web » Programando para Internet » PHP »

Seleccionar varias tablas...y error.

Estas en el tema de Seleccionar varias tablas...y error. en el foro de PHP en Foros del Web. Quiero comprobar si en todas las tablas hay almenos un registro que cumpla la condicion que le indico, lo intento de esta manera: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 31/01/2011, 05:50
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Seleccionar varias tablas...y error.

Quiero comprobar si en todas las tablas hay almenos un registro que cumpla la condicion que le indico, lo intento de esta manera:

Código PHP:
Ver original
  1. $sql1 = "SELECT codigo FROM pdebilesg1,pfuertesg1,p101incidenciag,iat1,p101concrecionesg WHERE codigo = '".$codigo."'";
  2.  
  3.                     $resul1=mysql_query($sql1) or die("<b>Error. El servidor dijo: </b> " . mysql_error());  
  4.  
  5.                     $row1=mysql_fetch_array($resul1);  
  6.                    
  7.                     if (empty($row1)) {
  8.                              
  9.                               $iat="Vacio"; }


El error que me tira:

Column 'codigo' in field list is ambiguous

Sé que singifica que el campo codigo se repite en todas las tablas si...pero no quiero eso.
  #2 (permalink)  
Antiguo 31/01/2011, 06:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 34
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Seleccionar varias tablas...y error.

si el campo codigo se repite en todas las tablas mysql no a a saber en que tabla debe hacer la comparacion, por ello mi recomendacion incluso si se repiten los nombres seria: SELECT tablaA.codigo FROM tablaA, tablaB, ... WHERE tablaA.codigo = tablaB.codigo por ejemplo.
  #3 (permalink)  
Antiguo 31/01/2011, 06:21
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Seleccionar varias tablas...y error.

qué? No se si me he explicado bien o no te entiendo....
  #4 (permalink)  
Antiguo 31/01/2011, 06:42
 
Fecha de Ingreso: agosto-2009
Mensajes: 34
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Seleccionar varias tablas...y error.

fijate:

SELECT codigo FROM pdebilesg1,pfuertesg1,p101incidenciag,iat1,p101con crecionesg WHERE codigo = '".$codigo."'

si no le indicas a sql en que tabla buscar el codigo y segun te entiendo en todas se repite la columna codigo, no va a ejecutar tu sentencia. Porque cuando trabajamos con varias tablas debemos especificar al sql donde se encuentra cada columna y su respectiva tabla. En tu sentencia estas seleccionando un campo "codigo" de cinco tablas distintas, alli empieza el problema, por ello debes identificar la tabla:

SELECT pdebilesg1.codigo FROM pdebilesg1,pfuertesg1,p101incidenciag,iat1,p101con crecionesg WHERE pdebilesg1.codigo = '".$codigo."'

puedes leer por aqui, si no te recomiendo preguntar en el foro de mysql: http://dev.mysql.com/doc/refman/5.0/es/multiple-tables.html
  #5 (permalink)  
Antiguo 01/02/2011, 07:41
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Seleccionar varias tablas...y error.

Entonces eso deberia funcionar?

SELECT pdebilesg1.codigo, pfuertesg1.codigo ,p101incidenciag.codigo FROM pdebilesg1,pfuertesg1,p101incidenciag,iat1,p101con crecionesg WHERE codigo = '".$codigo."
  #6 (permalink)  
Antiguo 01/02/2011, 09:07
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 3 meses
Puntos: 26
Respuesta: Seleccionar varias tablas...y error.

eee sabes que en un proyecto la creacion de la base de datos ocupa el 70% casi, ya que si la bd esta mala a futuro tus trabajos van a colapsar.

una idea esque crees una tabla de por ejemplo usuarios (que contendra todos los usuarios) y sus atributos serian usu_nombre,usu_password,usu_email,usu_pais_id.

la tabla paises que conecta con usuarios, sus atributos serian pais_id,pais_nombre

asi podras hacer una clara diferencia y no colapsar en el intento de crear una simple consulta sql como la de arriba.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #7 (permalink)  
Antiguo 01/02/2011, 10:50
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Seleccionar varias tablas...y error.

Ya estaba creada la base de datos y asi es, todos se identifican a través del campo codigo.

Lo que quiero es comprobar esto:

- Que todas las bases contengan algo con el codigo proporcionado
- Que solo algunas lo tengan
-Que ninguna lo tenga

Se os ocurre algo mejor que lo que puse anteriormente?
  #8 (permalink)  
Antiguo 01/02/2011, 11:46
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 3 meses
Puntos: 26
Respuesta: Seleccionar varias tablas...y error.

si lo se, pero las maquinas son maquinas. si tienes tablas sumas y resta con campo id en la dos no sabra que hacer en la consulta.-

select id from sumas,restas where id='$id'

ya que no existe un identificador claro.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #9 (permalink)  
Antiguo 01/02/2011, 11:48
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Seleccionar varias tablas...y error.

Ahora esto parece funcionar pero no sé si es lo correcto:

Código PHP:
Ver original
  1. $sql1 = "SELECT * FROM pdebilesg1,pfuertesg1 WHERE pdebilesg1.codigo = '".$codigo."' AND pfuertesg1.codigo = '".$codigo."'";
  #10 (permalink)  
Antiguo 01/02/2011, 11:50
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Seleccionar varias tablas...y error.

Esta bien Adrian, eso no te deberia generar problemas dado que consultas por cada campo de diferentes tablas
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 14:12.