Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/07/2012, 11:07
elpropiopato23
 
Fecha de Ingreso: octubre-2011
Ubicación: Niquitao
Mensajes: 28
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Pasar nombre de Campo o tabla a una Variable de Usuario en una consulta de

Hola leonardo_josue:
De Antemano te doy muchas Gracias Por responderme tan pronto, y discúlpame por la demora en responder de mi parte, lo que pasa es lo siguiente tengo una tabla llamada
stream cuyos campos son los siguientes idstream, tabla, claveprimaria
El campo tabla tiene los nombres de las tablas de mi base de datos , y el campo claveprimaria tiene la clave primaria de esa tabla entonces te explicare esto:
Hay 3 tablas stream, grade, asignatura:
Tabla=grade y tiene los campos idgrade,name,description
Tabla= asignatura y tiene los campos idasignatura, name, description,

Echemos un vistaso a los datos de la tabla grade

idgrade ----- name ------- description
1 ---------- primero --------- Primergrado
2 ---------- segundo ------- Segundogrado


Echemos un vistaso a los datos de la tabla asignatura

idasignatura----- name ----------- description
10 ---------- Lengua Castellana ------- Español
20 ------------ Matemáticas --------- Matemáticas

Echemos un vistaso a los datos de la tabla stream

idstream ----- tabla ---------- claveprimaria
10 ---------- asignatura ---------- 10
20 ------------ grade ------------ 2


Una consulta normal seria la siguiente
SELECT grade.* FROM stream INNER JOIN grade ON stream. claveprimaria = grade.idgrade WHERE stream. claveprimaria =2 AND stream. tabla =’grade’

Me arrojaria el siguiente resultado:


idgrade ----- name ------- description
2 ---------- segundo ------ Segundogrado

Los resultados son correctos porque yo especifico el nombre de la tabla.
Como se observa a continuación INNER JOIN grade
y su clave primaria ON stream. claveprimaria = grade.idgrade estos valores son con los que nos hace la relación de las 2 tablas.

Pero la consulta se debe hacer de la siguiente forma la tabla con la que se relacionara en el INNER JOIN debe ser un valor que varía, en este caso puede ser asignatura o grade Ejemplo:

SELECT grade.* FROM stream INNER JOIN (valor del campo tabla) ON stream.claveprimaria= (valor del campo tabla).id(valor del campo tabla) WHERE stream.idregistry=2 AND stream. tabla =(valor del campo tabla)

Por este motivo pense en una variable debido a que el valor se le especifica desde afuera
SET @tabla=grade, @campo = CONCAT(´id´, @tabla) ; “@campo su valor sera idgrade”
SELECT @tabla.* FROM stream INNER JOIN @tabla ON stream. claveprimaria = @tabla . @campo WHERE stream. claveprimaria =2 and stream.tabla = @tabla
No se si abra mejores metodos de hacer esta consulta, lo unico que pido es que apartir de los datos de los campos (tabla,claveprimaria) la tabla stream haga los INNER JOIN basándose en el valor de los datos de estos 2 campos

Última edición por elpropiopato23; 12/07/2012 a las 12:15 Razón: Mal Organizado el Mensaje