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

[SOLUCIONADO] Crear una vista relacionando dos tablas con una condicion

Estas en el tema de Crear una vista relacionando dos tablas con una condicion en el foro de PostgreSQL en Foros del Web. Bueno, gracias al foro sigo con mi proyecto de las parcelas Ahora se me presenta la siguiente dificultad: Parto de estas tres tablas (de forma ...
  #1 (permalink)  
Antiguo 09/06/2015, 15:50
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Crear una vista relacionando dos tablas con una condicion

Bueno, gracias al foro sigo con mi proyecto de las parcelas

Ahora se me presenta la siguiente dificultad:
Parto de estas tres tablas (de forma resumida):

Código SQL:
Ver original
  1. Tabla parcelas: id, nombre
  2. Tabla cultivos: id_parcela, id_cultivo, superficie
  3. Tabla tipocultivos: id,nombre

Bueno, pues ahora necesitaría crear una vista que relacionase las tablas, pero sólo la que tenga mayor superficie de cultivo.

Es decir, que si tengo esto:

Código SQL:
Ver original
  1. Parcelas:
  2.  
  3. id | nombre
  4. --------------
  5. 1  | Parcela1

Código SQL:
Ver original
  1. Cultivos:
  2.  
  3. id_parcela | id_cultivo | superficie
  4. ----------------------------------------
  5.           1|           1| 150
  6.           1|           2| 300

Código SQL:
Ver original
  1. TipoCultivos
  2.  
  3. id | nombre
  4. --------------
  5. 1 | Trigo
  6. 2 | Alfalfa

La Vista saque:
Código SQL:
Ver original
  1. id | Nombre | Sup. | Cultivo
  2. ---------------------------------
  3. 1 | Parcela1 | 300 | Alfalfa

El DBMS es Postgresql.

Muchas gracias por adelantado.
__________________
Mi calculadora en Qt
  #2 (permalink)  
Antiguo 09/06/2015, 16:07
inazense
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear una vista relacionando dos tablas con una condicion

En el select para crear la vista haz una condición que ordene de forma descendente por superficie y limitalo a 1.
O si puede darse el caso de que haya superficies iguales haz que la condición sea igual a una subconsulta que devuelva el maximo de la superficie (función max()) y listo.
  #3 (permalink)  
Antiguo 10/06/2015, 07:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Crear una vista relacionando dos tablas con una condicion

Código MySQL:
Ver original
  1. select * form parcelas as t1
  2. left join (select max(superficie),id_cultivo,id_parcela from cultivos group by id_cultivo,id_parcela) as t2 on t1.idparcela=t2.id_parcela
  3. left join cultivos as t3 on t2.id_cultivo=t3.id_cultivo
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 10/06/2015, 10:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Crear una vista relacionando dos tablas con una condicion

Muchas gracias a ambos.
__________________
Mi calculadora en Qt

Etiquetas: bases-de-datos-general, sql, tabla, tablas, vista
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 04:02.