Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/06/2013, 07:19
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Resolver clave foranea

Cita:
SELECT Descripcion,Responsable(Nombre) FROM Acciones WHERE Status='Realizado'
Eso no existe.

Cita:
Es por ser mas profesional a la hora de escribir las peticiones (y simplicidad visual).


Lo que estás planteando hacer no es profesional.
Mira, lo que quieres es tan simple y sencillo como hacer:
Código MySQL:
Ver original
  1. SELECT A.Descripcion, U.Nombre Responsable
  2. FROM Usuarios U INNER JOIN Acciones A ON U.usuario_id = A.Responsable
  3. WHERE Status='Realizado'
Es a es la forma correcta y profesional de hacerlo.
Y NO, si al DBMS no le indicas específicamente cómo relacionar dos tablas y qué campo quieres obtener, no puede adivinarlo, porque los nombres son arbitrarios (puestos por los creadores de las tablas), y una FK puede implicar N relaciones entre una tabla y otra; en esos casos el análisis semántico de las relaciones que quieres suponer implicarían algoritmos imposibles de optimizar para un DBMS.
Los DBMS no infieren relaciones, con la sola excepción de los JOINs implícitos (comas), que sólo operan si el campo relacional tiene el mismo nombre en ambas tablas, pero que mal usado puede causar enormes errores de resultados.
El uso de las FK, entre otras cosas, obliga al desarrollador a respetar la consistencia e integridad referencial, y no son para que el DBMS pueda resolver por si mismo ciertas consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 22/06/2013 a las 07:46