Tema: Multiples fk
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/10/2012, 09:06
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: Multiples fk

El objetivo de usar los BBCODE es que la consulta sea más sencilla de analizar. Por ejemplo:
Código MySQL:
Ver original
  1.     DP.cantidad,
  2.     DP.dias,
  3.     DP.precio_unit,
  4.     DP.precio_total_ps,
  5.     DP.Descrip,
  6.     P.fecha_emision,
  7.     P.subtotal,
  8.     P.iva,
  9.     P.total_general_p,
  10.     P.fecha_confirmacion,
  11.     C.nombre_rs,
  12.     C.telefono,
  13.     C.fax,
  14.     CC.contacto1,
  15.     CC.cargo_dpto_c1,
  16.     CC.telefono_c1,
  17.     DE.fecha_inic,
  18.     DE.fecha_fin,
  19.     DE.hora_e,
  20.     DE.n_personas,
  21.     E.nombre_e,
  22.     S.nombre_s_a,
  23.     M.nombre_mtje,
  24.     DP.codigo_salon,
  25.     DP.codigo_mtje,
  26.     DP.codigo_pto,
  27.     DP.codigo_osv,
  28.     DP.codigo_hab,
  29.     DP.codigo_eq,
  30.     DP.codigo_b,
  31.     DP.codigo_mt,
  32.     DP.codigo_alim
  33.     detalle_presupuesto DP
  34.     INNER JOIN presupuesto P     ON DP.codigo_pto     = P.codigo_pto
  35.     INNER JOIN cliente C         ON P.codigo_cte     = C.codigo_cte
  36.     INNER JOIN contactocli CC     ON C.codigo_cte     = CC.codigo_cte
  37.     INNER JOIN detalle_evento DE     ON DP.codigo_pto     = DE.codigo_pto
  38.     INNER JOIN evento E         ON DE.codigo_evento     = E.codigo_evento
  39.     INNER JOIN salon S         ON DP.codigo_salon     = S.codigo_salon
  40.     INNER JOIN montaje M         ON DP.codigo_mtje     = M.codigo_mtje
  41.     DP.codigo_pto = 32
  42.     AND
  43.     S.codigo_salon = S1
  44.     AND
  45.     M.codigo_mtje = M1

Respecto al nombre de los campos usados de FK, la buena práctica dice que siempre tienen que tener el mismo nombre en todas las tablas donde aparezcan, y que debe ser el mismo que en su tabla de origen. Por eso jamás se deben usar nombres demasiado genéricos, como ID, CODIGO o cosas demasiado simples. Es mejor que sean específicos como ID_PRODUCTO, USER_ID, etc.
De ese modo no se prestan a confusiones y simplifican la escritura.

De todos modos, el problema de que no devuelva datos es siempre el mismo: No hay datos que cumplan las condiciones.
Descríbeme qué es lo que hace esa consulta. Es un listado de presupuesto, ¿de qué forma?, ¿vinculando qué datos?
Si lo explicas con un lenguaje coloquial (y sin imágenes), describiendo las reglas del negocio, posiblemente podamos ver por donde falla el tema.

Lo más probable es que las condiciones estén mal planteadas, relacionado las cosas de modo indebido y con el JOIN incorrecto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)