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

Consulta: Llave primaria formada por 2 campos

Estas en el tema de Consulta: Llave primaria formada por 2 campos en el foro de Bases de Datos General en Foros del Web. Hola a todos... tengo estas dos tablas: Tabla 1: Campo01 (Llave primaria) Campo02 (Llave primaria) Campo03 Tabla 2: Campo01 (Llave primaria) Campo02 (Llave primaria) Campo03 ...
  #1 (permalink)  
Antiguo 18/08/2005, 11:10
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta Consulta: Llave primaria formada por 2 campos

Hola a todos...

tengo estas dos tablas:

Tabla 1:

Campo01 (Llave primaria)
Campo02 (Llave primaria)
Campo03

Tabla 2:

Campo01 (Llave primaria)
Campo02 (Llave primaria)
Campo03 (Llave primaria)

pero el Campo01 de mi Tabla 2 está compuesto del campo01 y campo2 de tabla1....


como puedo hacer para determinar en mi clausula WHERE que
tabla02.campo01= (tabla1.campo01,tabla1.campo02)

es decir, concatenar campo01 y campo02 de tabla 1...

Alguien sbe cómo????


Gracias por la ayuda...
  #2 (permalink)  
Antiguo 18/08/2005, 11:22
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Está un poco rara tu estructura pero en esos casos en tu tabla 2 se supone que debe tener un ID foráneo que permita identificar la referencia de su tabla dependiente que es la tabla 1.. y por lo tanto sería necesitarías una tercera llave en tu tabla1 que sea la que coloques como referencia en la tabla2

algo así:

Cita:
tabla1
campo1 (llave) (unica)
campo2 (llave)
campo3 (llave)

tabla2
FK_Campo1 (referencia de tabla1 campo1)
campo2
...
Pero también sería bueno saber que tipos de datos estás manejando y para que estas ocupando una llave compuesta.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 18/08/2005, 12:34
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Hola RootK...


De hecho antes tenia una llave que heredaba a la tabla 2, y no habia problema,
pero segun mi asesor "analizando la tabla y apegandome a un sistema de base de datos relacional, no permite tener claves como sacadas de la manga"
entonces tenia que redefinir la estructura de mis tablas....

las describo bien a continuacion:

Código:
	
grupos:

materia      char(8) 	PRI 	  	 
grupo 	     char(2) 	PRI 	  	 
profesor     int(4) 	  	  	
 

horario de grupos:
clave_grupo  	varchar(12) PRI
dia 	            varchar(9) 	 PRI 	  	 
hora 	            time 	  PRI 	 
aula 	char(4)

entonces necesito seleccionar todos los grupos (materia, grupo) de la tabla de grupos, que coincidan con un grupo del horario de grupos que yo diga...

horario_grupos.clave_grupo= (grupos.materia,grupos.grupo)
__________________
El enemigo a vencer, es el miedo a preguntar!!!
  #4 (permalink)  
Antiguo 18/08/2005, 12:51
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
pero segun mi asesor "analizando la tabla y apegandome a un sistema de base de datos relacional, no permite tener claves como sacadas de la manga"
Pues tu asesor te debe decir que la estructura que me muestras no es la mas normalizada..

Por ejemplo.. para empezar... un profesor puede tener una o mas materias, que pueden ser impartidas en uno o mas grupos.. y sin embargo todo lo tienes en una sola tabla... y tus campos llaves los tienes como char..por lo regular se usan campos llaves como tipo enteros para que los índices sean más rápidos..

Creo que se puede hacer un reacomode de las tablas.. donde tengas por ejemplo tus materias, tus profesores y los grupos... ya que si el día de mañana necesitan informacion por ejemplo el apellido del profesor o su telefono.. o algo por el estilo tu tabla no cumplirá con el requisito..

Y te recomiendo usar campos de tipo char cuando sabes la longitud exacta de tu campo... porque de lo contrario siempre estaría ocupando todo el espacio aún cuando tu texto solo neceiste uno...

Esos son mis comentarios de manera general... creo que habría que hacer una mejor definición a tu BD..

Pero cualquier cosa por aqui andamos..
  #5 (permalink)  
Antiguo 18/08/2005, 12:58
 
Fecha de Ingreso: noviembre-2002
Ubicación: Washington, DC
Mensajes: 822
Antigüedad: 21 años, 5 meses
Puntos: 5
Estoy muy de acuerdo con RootK...

Realmente seria mas util si nos dieras el ejemplo con datos.
No entiendo como quieres interpretar
tabla02.campo01= (tabla1.campo01,tabla1.campo02)
El campo01 de la tabla2 tendra de ambos datos en la misma columna?
O quizas lo que intentas decir es que la clave_grupo del la tabla dos es la que traes de la tabla grupos...como:

SELECT materia, grupo, profesor, dia, hora, aula
from tabla01, tabla02
WHERE clave_grupo = grupo and hora='lahoradefinida'

Creo si nos das datos al menos tres lineas de cada tabla y que quieres ver en el resultado te podriamos ayudar mejor...
__________________
Yanira
  #6 (permalink)  
Antiguo 18/08/2005, 13:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Gracias RootK...
tomare en cuenta lo que me dices...

de todas maneras, hay alguna forma de hacer un consulta como la que planteo???
  #7 (permalink)  
Antiguo 18/08/2005, 13:46
 
Fecha de Ingreso: febrero-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
OK. está de esta manera:

en la tabla grupos se guardan los distintos grupos que se crean para cada materia (tengo una tabla para las materias)...

Los campos de esta tabla son:

'materia' (clave de la materia)
'grupo' (numero de grupo, puede ser 01 , 02 o 03)
'profesor' (numero de clave del profesor)

los campos materia y grupo son la llave primaria de esta tabla...

y de la tabla horario_grupos tengo lo siguiente:

'clave_grupo' (este campo esta formado de la clave de la materia y del numero de grupo, es decir, es la llave primaria de mi tabla grupos)
'día' (el numero de día que recibe clasesel grupo 1= Lunes..... 6=Sabado)
'hora' (pues la hora a la que recibe clases el grupo)
'aula'


tengo una consulta en la que necesito saber el aula en la que llevara clases determinado grupo que yo seleccione através de 2 combos, en uno aparecen los nombres de la materia y el otro muestra los grupos creados para esa materia...
y en mi consulta yo asigno el día y hora que necesito saber...

la tabla materias es esta:

'cve_materia'
'nombre'
'semestre'

y la de profesores es esta:

'clave'
'nombre'
'especialidad'

espero que sirvan estos datos para comprender mejor la situacion

gracias por la ayuda
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 17:39.