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

Como hago el join ???

Estas en el tema de Como hago el join ??? en el foro de Mysql en Foros del Web. Estimados Foreros. Tengo un problema de conceptos y necesito que me ayuden. Necesito hacer unos Join con la info de mi BD Necesito hacer un ...
  #1 (permalink)  
Antiguo 12/02/2013, 07:47
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Como hago el join ???

Estimados Foreros.

Tengo un problema de conceptos y necesito que me ayuden.
Necesito hacer unos Join con la info de mi BD
Necesito hacer un hacer el JOIN desde la misma tabla para la PK de esquemaprograma

Código SQL:
Ver original
  1. SELECT
  2.     p.profolio
  3. FROM
  4.     esquemaprograma AS ep
  5. INNER JOIN programa AS p ON (ep.profolio=p.profolio)
  6. INNER JOIN simulaciones AS s ON (ep.profolio=s.profolio)
  7.  
  8. Seguir JOIN's...
  9.    
  10.    
  11. WHERE
  12.     p.profolio='1300030';


Código SQL:
Ver original
  1. -- Table: simulaciones
  2.  
  3. -- DROP TABLE simulaciones;
  4.  
  5. CREATE TABLE simulaciones
  6. (
  7.   simcodigo serial NOT NULL,
  8.   item INTEGER NOT NULL DEFAULT 1,
  9.   esqcodigo INTEGER,
  10.   patcodigo CHARACTER VARYING(4),
  11.   profolio CHARACTER VARYING(9),
  12.   refcreacion DATE,
  13.   rendimiento DOUBLE PRECISION,
  14.   simnombrebd CHARACTER VARYING(100),
  15.   simruta CHARACTER VARYING(200),
  16.   simobservacion CHARACTER VARYING(1000),
  17.   simtrozosconsumo INTEGER,
  18.   simvolumenconsumo DOUBLE PRECISION,
  19.   simdiametropromedio DOUBLE PRECISION,
  20.   fechareal DATE,
  21.   turnoreal CHARACTER(2),
  22.   aserrin DOUBLE PRECISION,
  23.   pzasadicionalesl1 INTEGER DEFAULT 0,
  24.   pzasadicionalesl2 INTEGER DEFAULT 0,
  25.   astillas DOUBLE PRECISION,
  26.   largoreal DOUBLE PRECISION,
  27.   diametromedio DOUBLE PRECISION,
  28.   anchobasa DOUBLE PRECISION,
  29.   diametromin DOUBLE PRECISION,
  30.   conicidad DOUBLE PRECISION,
  31.   alturacortemultiple DOUBLE PRECISION,
  32.   npiezascentralesesquema INTEGER,
  33.   npiezaslat1esquema INTEGER,
  34.   npiezaslat2esquema INTEGER,
  35.   nmultiploscentrales INTEGER,
  36.   npiezaslat1 INTEGER,
  37.   npiezaslat2 INTEGER,
  38.   porcretorno DOUBLE PRECISION,
  39.   porclat1espbajo DOUBLE PRECISION,
  40.   porclat1espalto DOUBLE PRECISION,
  41.   porclat2espbajo DOUBLE PRECISION,
  42.   porclat2espalto DOUBLE PRECISION,
  43.   sumaanchoslaterales DOUBLE PRECISION,
  44.   sumaanchoscentrales DOUBLE PRECISION,
  45.   porcpzasempalilladas DOUBLE PRECISION,
  46.   porcpzasnoempalilladas DOUBLE PRECISION,
  47.   anchomincentral DOUBLE PRECISION,
  48.   anchomaxcentral DOUBLE PRECISION,
  49.   rendpotencial DOUBLE PRECISION,
  50.   volconsumounitario DOUBLE PRECISION,
  51.   rendcentral DOUBLE PRECISION,
  52.   rendlateral DOUBLE PRECISION,
  53.   cortecruz CHARACTER(2),
  54.   porcrecupcentrales DOUBLE PRECISION,
  55.   anchomediocentral DOUBLE PRECISION,
  56.   npiezascentrales DOUBLE PRECISION,
  57.   "VelocidadEsquemaTotal" DOUBLE PRECISION,
  58.   "VelocidadSeteoLinea" DOUBLE PRECISION,
  59.   CONSTRAINT pk_simulaciones PRIMARY KEY (simcodigo, item),
  60.   CONSTRAINT fk_simulaci_reference_esquemap FOREIGN KEY (item, esqcodigo, patcodigo, profolio, refcreacion, rendimiento)
  61.       REFERENCES esquemaprograma (item, esqcodigo, patcodigo, profolio, refcreacion, rendimiento) MATCH SIMPLE
  62.       ON UPDATE RESTRICT ON DELETE RESTRICT
  63. )
  64. WITHOUT OIDS;
  65. ALTER TABLE simulaciones OWNER TO postgres;
  66. COMMENT ON TABLE simulaciones IS 'Tabla de simulaciones anexadas a un programa';

Código SQL:
Ver original
  1. -- Table: esquemaprograma
  2.  
  3. -- DROP TABLE esquemaprograma;
  4.  
  5. CREATE TABLE esquemaprograma
  6. (
  7.   item INTEGER NOT NULL DEFAULT 1,
  8.   profolio CHARACTER VARYING(9) NOT NULL,
  9.   esqcodigo INTEGER NOT NULL,
  10.   patcodigo CHARACTER VARYING(4) NOT NULL,
  11.   refcreacion DATE NOT NULL,
  12.   rendimiento DOUBLE PRECISION NOT NULL,
  13.   pzasesquema INTEGER,
  14.   observaciones CHARACTER VARYING(100),
  15.   CONSTRAINT pk_esquemaprograma PRIMARY KEY (item, esqcodigo, patcodigo, profolio, refcreacion, rendimiento),
  16.   CONSTRAINT fk_esquemap_esquemapr_programa FOREIGN KEY (profolio)
  17.       REFERENCES programa (profolio) MATCH SIMPLE
  18.       ON UPDATE RESTRICT ON DELETE RESTRICT,
  19.   CONSTRAINT fk_esquemap_esquemapr_rendimie FOREIGN KEY (esqcodigo, patcodigo, refcreacion, rendimiento)
  20.       REFERENCES rendimientosimulado (esqcodigo, patcodigo, refcreacion, rendimiento) MATCH SIMPLE
  21.       ON UPDATE RESTRICT ON DELETE RESTRICT
  22. )
  23. WITH OIDS;
  24. ALTER TABLE esquemaprograma OWNER TO postgres;
  25. COMMENT ON TABLE esquemaprograma IS 'Tabla de los esquemas asociados a un programa';
  26.  
  27.  
  28.  
  29.  
  30. -- Trigger: calcula_trozos on esquemaprograma
  31.  
  32. -- DROP TRIGGER calcula_trozos ON esquemaprograma;
  33.  
  34. CREATE TRIGGER calcula_trozos
  35.   AFTER INSERT
  36.   ON esquemaprograma
  37.   FOR EACH ROW
  38.   EXECUTE PROCEDURE calcula_trozos_tri();
  #2 (permalink)  
Antiguo 12/02/2013, 11:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como hago el join ???

Esto no es MySQL, sino Postgress. Haz la consulta en el foro de Postgress. No obstante, intenta aclarar lo que necesitas. La consulta es SQL, y por eso te respondo lo siguiente: Si tienes tres tablas relacionadas, programa, esquemaprograma, simulaciones, y esquemaprogrema y simulaciones están relacionadas con programa, y luego añades un filtro con un dato de profolio que necesariamente no aparecerá en las tablas esquemaprograma y simulaciones solo obtendras el listado de programas que tengan una simulacion y un esquema. Pero quieres que el filtro obtenga resultado cuando aparezca una, otra, ambas o ninguna, para eso es mejor empezar por los programas, que sí estarán todos, y unir mediante LEFT JOIN, y luego buscar en esa tabla el profolio. Naturalmente, habrá ocasiones en que haya simulaciones, otras en que haya esquemas de ese programa, y alguna en que no haya nada y te aparezcan NULL. Mediante el control de los null, puedes buscar aquellos de lo que hay una, otra, o ambas.
Código MySQL:
Ver original
  1. FROM programas p
  2. LEFT JOIN simulaciones s ON p.profolio = s.profolio
  3. LEFT JOIN esquemaprograma ep ON p.profolio = ep.profolio
  4. WHERE p.profolio =@valorbuscado

Etiquetas: join
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 22:03.