PostgreSQL - relacion de tablas

 
Vista:
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

relacion de tablas

Publicado por zendi (131 intervenciones) el 22/10/2014 14:45:17
Buen dia a todos.
Estoy creando un query con 2 tablas:


esta es la paciente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE paciente
(
  nrohistoria integer NOT NULL,
  nombre text NOT NULL,
  direccion text,
  telefono numeric,
  fecha_nac date NOT NULL,
  id_paciente serial NOT NULL,
  cod_sanguineo integer NOT NULL,
  cod_sexo integer,
  CONSTRAINT paciente_pkey PRIMARY KEY (id_paciente),
  CONSTRAINT paciente_cod_sanguineo_fkey FOREIGN KEY (cod_sanguineo)
      REFERENCES gsanguineo (codigo) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE RESTRICT,
  CONSTRAINT paciente_cod_sexo_fkey FOREIGN KEY (cod_sexo)
      REFERENCES sexo (codigo) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE paciente OWNER TO postgres;




y esta es la de nombre consulta:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
CREATE TABLE consulta
(
  id_consulta serial NOT NULL,
  fecha date NOT NULL,
  id_paciente serial NOT NULL,
  peso numeric(5,2) NOT NULL,
  talla numeric(5,2) NOT NULL,
  circunfcefalica numeric(5,2) NOT NULL,
  circunfbrazo numeric(5,2),
  cod_hcm integer,
  observacion text,
  edad numeric,
  hepatitisa boolean,
  hepatitisb boolean,
  polio boolean,
  fiebreamarilla boolean,
  difteriatetanos boolean,
  varicela boolean,
  meningitis boolean,
  haemophilusinfluenza boolean,
  sarampion boolean,
  rubeola boolean,
  parotiditis boolean,
  vph boolean,
  rotavirus boolean,
  tuberculosis boolean,
  CONSTRAINT consulta_pkey PRIMARY KEY (id_consulta),
  CONSTRAINT consulta_cod_hcm_fkey FOREIGN KEY (cod_hcm)
      REFERENCES hcm (codigo) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE RESTRICT,
  CONSTRAINT consulta_id_paciente_fkey FOREIGN KEY (id_paciente)
      REFERENCES paciente (id_paciente) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE RESTRICT
)
WITHOUT OIDS;
ALTER TABLE consulta OWNER TO postgres;

y este es el query:

1
2
3
4
5
6
7
8
9
10
SELECT nrohistoria, lpad(CAST(nrohistoria AS TEXT), 4, '0') AS nrohistoria FROM paciente;,
       nombre,
	consulta.id_paciente,
       consulta.fecha
  FROM paciente,consulta
 WHERE paciente.nrohistoria = 3
 
GROUP BY nrohistoria,
       nombre,	consulta.id_paciente,
       consulta.fecha

yo hice la relacion por id_paciente cuando diseñé las tablas, pero la idea es que quiero hacer la busqueda por nrohistoria pero esta arrojando doble registro, cuando debiera traer un unico nro de historia.
¿acaso debo rediseñar las tablas con nrohistoria para cada tabla o las dejo tal como estan?

este es el resultado del query

relacion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

relacion de tablas

Publicado por martin (121 intervenciones) el 22/10/2014 14:56:12
por lo que veo para dos pacientes(5 y 4) tiene el mismo nrohistoria(3), por eso se duplica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

relacion de tablas

Publicado por zendi (131 intervenciones) el 22/10/2014 15:19:09
disculpa martin, en realidad la consulta es esta:


1
2
3
4
5
6
7
8
9
SELECT nrohistoria, lpad(CAST(nrohistoria AS TEXT), 4, '0') AS nrohistoria,
       nombre,
	consulta.id_paciente,
       consulta.fecha
  FROM paciente,consulta
 WHERE paciente.nrohistoria = 3
GROUP BY nrohistoria,
       nombre,	consulta.id_paciente,
       consulta.fecha

y el resultado es este:
relacion

habia enviado el que no era.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

relacion de tablas

Publicado por martin (121 intervenciones) el 23/10/2014 18:39:52
por lo pronto es por que tenes a un paciente con la historia 3 y otro con la misma historia 3.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar