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

WHERE Foreign Key = Primary Key ??

Estas en el tema de WHERE Foreign Key = Primary Key ?? en el foro de Mysql en Foros del Web. Como puedo utilizar la foreign key de una tabla en un select? Yo quiero por ejemplo hacer algo como lo siguiente: SELECT * FROM carrito ...
  #1 (permalink)  
Antiguo 29/11/2011, 06:09
Avatar de AeroSilver  
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 12 años, 4 meses
Puntos: 15
WHERE Foreign Key = Primary Key ??

Como puedo utilizar la foreign key de una tabla en un select?

Yo quiero por ejemplo hacer algo como lo siguiente:

SELECT * FROM carrito WHERE [El valor de mi Foreign Key sea igual al valor de la Primary Key a la que apunta].

Hacer eso sería hacer exactamente esto:

SELECT * FROM carrito, producto WHERE carrito.idproducto = producto.idproducto

Pero porqué tengo que estar acordándome de cada uno de los atributos? Si de todas formas ya digo hacia donde apunta mi foreignk key. Qué practicidad tiene declarar foreign key entonces?.
  #2 (permalink)  
Antiguo 29/11/2011, 06:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: WHERE Foreign Key = Primary Key ??

Por que el objetivo de una FK no es exactamente hacer JOINS sino mantener la integridad referencial y la consistencia. Su uso como parte de un JOIN es una consecuencia de esto, pero además es opcional, porque en tu ejemplo podrías estar usando otro tipo de vínculo, simplemente porque lo que quieres averiguar es otra cosa.
Además, necesitas recordar cuales son los atributos, porque MySQL no sabe, a priori, cuál es la vinculación que pretendes dar al JOIN y por tanto hasta que no la declares expresamente sólo puede hacerlo por igualdad de nombres (eso hace la coma).
MySQL sólo relaciona en un JOIN hecho con la coma aquellos campos que llevan el mismo nombre, pero eso puede dar como resultado productos cartesianos. El modo de restringir esa cosecuencia (que en otros casos puede ser útil) es determinando la relación específicamente..
Hay otros considerandos, pero te advierto que todos los DBMS trabajan igual, y hay razones fundamentales para eso, que sólo ves cuando estudias la carrera y te especializas en el tema.
Hasta entonces, simplemente usa el SQL como se indica en manuales de referencia y/o tutoriales.
Si quieres ahondar profundamente en el tema, busca el libro "Fundamentos de las bases de datos", de Kort.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: key, primary, select, tabla, foreignkey
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 10:49.