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

Select a varias tablas (desesperaito)

Estas en el tema de Select a varias tablas (desesperaito) en el foro de Bases de Datos General en Foros del Web. Hola a todos, y antes de nada, gracias por este foro que me está ayudando muchísimo. La cuestión es que tengo una base de datos ...
  #1 (permalink)  
Antiguo 14/12/2006, 14:45
 
Fecha de Ingreso: agosto-2006
Ubicación: Madrid
Mensajes: 16
Antigüedad: 17 años, 8 meses
Puntos: 0
Select a varias tablas (desesperaito)

Hola a todos, y antes de nada, gracias por este foro que me está ayudando muchísimo.

La cuestión es que tengo una base de datos access con 2 tablas, una Cursos y otra Empleados. En las dos coincide el campo n_empleado.

He creado una hoja de asp (consultas.asp) en la que puedes buscar por varios campos como dni, nombre, empresa, nombrecurso, etc y un boton que envía los datos a otra (consultasasp.asp).

Todas las consultas me las hace bién, y me saca los datos correctamene de las 2 tablas, excepto cuando uso para la búsqueda el campo duplicado (n_empleado) y me da el error:

[Microsoft][Controlador ODBC Microsoft Access] Puede que el campo 'n_empleado' especificado haga referencia a más de una tabla de las mostradas en la cláusula FROM de la instrucción SQL.

Ya no se por donde cogerlo. Por favor una ayudita...

La consulta es esta:

szSQL = "SELECT * FROM Cursos INNER JOIN Empleados ON Cursos.n_empleado = Empleados.n_empleado WHERE"


if (denominacionb<>"") then
szSQL = szSQL & " denominacion='"&denominacionb&"' "
inicio=1
end if
if (instructorb<>"") then
if (inicio>0) then
szSQL = szSQL & " AND instructor='"&instructorb&"' "
else
szSQL = szSQL & " instructor='"&instructorb&"' "
inicio=1
end if
end if

if (areacursob<>"") then
if (inicio>0) then
szSQL = szSQL & " AND areacurso='"&areacursob&"' "
else
szSQL = szSQL & " areacurso='"&areacursob&"' "
inicio=1
end if
end if

if (n_empleadob<>"") then
if (inicio>0) then
szSQL = szSQL & " AND n_empleado="&n_empleadob&" "
else
szSQL = szSQL & " n_empleado="&n_empleadob&" "
inicio=1
end if
end if

if (dnib<>"") then
if (inicio>0) then
szSQL = szSQL & " AND dni="&dnib&" "
else
szSQL = szSQL & " dni="&dnib&" "
inicio=1
end if
end if

if (nombreb<>"") then
if (inicio>0) then
szSQL = szSQL & " AND nombre='"&nombreb&"' "
else
szSQL = szSQL & " nombre='"&nombreb&"' "
inicio=1
end if
end if

if (apellido1b<>"") then
if (inicio>0) then
szSQL = szSQL & " AND apellido1='"&apellido1b&"' "
else
szSQL = szSQL & " apellido1='"&apellido1b&"' "
inicio=1
end if
end if


Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 14/12/2006, 16:08
 
Fecha de Ingreso: agosto-2006
Ubicación: Madrid
Mensajes: 16
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Select a varias tablas (desesperaito)

Bueno, lo solucione haciendo una chapuzilla, al campo n_empleado de la tabla cursos lo cambie de nombre a n_empleado2 y luego igualé n_empleado a n_empleado2 y solucionado.

Al insertar campos en las tablas le he puesto que inserte el mismo valor a los dos campos y listo.

Una chapucilla pero parece que ya no da ningún error la consulta, seguro que habría soluciones más limpias, asi que si a alguién se le ocurre...

De todas formas seguiré probando porque no las tengo todas conmigo.

un saludo
  #3 (permalink)  
Antiguo 21/12/2006, 08:52
 
Fecha de Ingreso: diciembre-2006
Mensajes: 1
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Select a varias tablas (desesperaito)

Amigo en esta consulta "SELECT * FROM Cursos INNER JOIN Empleados ON Cursos.n_empleado = Empleados.n_empleado WHERE", no espècificas en el SELECT * de donde estas tomando el campo n_empleado si de la tabla Curso o de la tabla Empleado.

Te sugiero lo siguiente:

En lugar de SELECT *, especifiques todos los campos de ambas tablas tanto Curso como Empleado y ademas especifiques de donde vas a seleccionar el campo n_empleado.
Por Ejemplo: "SELECT Curso.n_empleado, Curso.Campo1, Empleado.campo2... FROM Cursos INNER JOIN Empleados ON Cursos.n_empleado = Empleados.n_empleado WHERE"

Y creo que asi no necesitas colocar el INNER JOIN ese que tienes ahi.

NOTA: cuando tu tienes un campo con el mismo nombre en dos tablas que quieres cruzar debes especificar en el SELECT de cual de las tablas vas a sacar el campo que se repite. por ello es que te da este error: [Microsoft][Controlador ODBC Microsoft Access] Puede que el campo 'n_empleado' especificado haga referencia a más de una tabla de las mostradas en la cláusula FROM de la instrucción SQL.
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 06:23.