Foros del Web » Programando para Internet » PHP »

Seleccionar mas de una tabla

Estas en el tema de Seleccionar mas de una tabla en el foro de PHP en Foros del Web. Estoy intentando seleccionar con un select mas de una tabla de esta manera: $query= "Select hash from trabajos,programas, hard where mon='".$mony['2']."'"; Pero me dice que: ...
  #1 (permalink)  
Antiguo 09/09/2003, 03:00
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 21 años, 9 meses
Puntos: 1
Pregunta Seleccionar mas de una tabla

Estoy intentando seleccionar con un select mas de una tabla de esta manera:
$query= "Select hash from trabajos,programas, hard where mon='".$mony['2']."'";

Pero me dice que:
Column: 'mon' in field list is ambiguous

Pero yo tengo en todas esas tablas la columna mon, y si lo hago con una sola tabla funciona
  #2 (permalink)  
Antiguo 09/09/2003, 03:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿Tu exactamente que quieres? Porque si es que te saque los registros de trabajos, programas y hard que cumplan la condicion unos detras de otros, te estas equivocando. Lo que estas haciendo es un join, es decir, estas creando una tabla temporal que tiene como campos todos los campos de todas las tablas. En este caso, es un cambinacion todos con todos los registros de todas las tablas, asi estas combinando todos los registros de trabajos con todos los registros de progrmas con todos los registros de hard. Asi, si tienes 3 campo y 10 registros en cada una de las tablas, estas creando una tabla temporal con 9 campos y 1000 registros. Sobre esa tabla temporal estas aplicando la condicion WHERE. Si los nombres de los campos de varai tablas coinciden, debes referirte al campo con tabla.campo. Este select devuelve los 9 campos.

Asi que no se que es lo que quieres. Pero si es lo que he descrito, tu consulta debera ser algo como:

$query="SELECT * FROM trabajos,programas, hard WHERE trabajos.mom=".$mony['2']."' AND programas.mom=".$mony['2']."' AND hard.mom=".$mony['2']."'"

Pero posiblemente no sea lo que deseas.

Ah, te dice ambiguos porque no sabe al campo de que tabla te refieres.

Saludos.

PD: Si es una consulta exclusivamente SQL, creo que iria mejor en el foro de Base de Datos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 09/09/2003, 03:11
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 21 años
Puntos: 0
trata asi=
si la columna hash tambien existe en todas:

$query=select trabajos.hash from trabajos,programas, hard where trabajos.mon='".$mony['2']."'";

y si ocupas mas o para que mas o menos entiendas, guia a la base de datos para que sepa que selecionar y de donde y como dandole tabla.columna, totalmente necesario si vas a trabajar multiple tablas
  #4 (permalink)  
Antiguo 09/09/2003, 03:25
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 21 años
Puntos: 0
jeje que curioso, contestamos al mismo tiempo
  #5 (permalink)  
Antiguo 09/09/2003, 04:36
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 21 años, 9 meses
Puntos: 1
Si, quiero seleccionar la columna hash de multiples tablas, lo he probado asi como tu as dicho pro no me las selecciona..
Código PHP:
$query=select trabajos.hash,programas.hash,hard.hash from trabajos,programashard where trabajos.mon='".$mony['2']."'
AND programas.mon='".$mony['2']."' AND hard.mon='".$mony['2']."'
"; 
  #6 (permalink)  
Antiguo 09/09/2003, 04:56
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, es porque esa consulta solo te devuelve los registros de la tabla combinada en que los 3 campos valen lo mismo. Si en una tabla no se cumple esa condicion, pues no devuelve ninguno. Prueba con OR en lugar de AND.

Pero sigo pensando que no es lo que quieres.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 17:30.