Autor Tema: Hacer un doble Join. Vistas MySQL create view or replace group by consultas  (Leído 5706 veces)

saroan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil


Teniendo este diseño se me plantean una serie de ejercicios los cuales iré mostrando para recibir ayuda , si es posible gracias

He probado con multitabla y subconsulta y no logro encontrar la solución correcta

1. El director del proyecto 'Células madres' quiere saber los nombres de los
científicos que están trabajando en él. 'celulas'.

Código: [Seleccionar]
create view or replace dire_proyect as
select id  from proyectos,asignado_a,cientificos
where asignado_a.proyecto = proyectos.id and asignado_a.cientifico
= cientificos.dni;

create view or replace dire_proyect as
select nombre from proyectos where id in
(select proyecto from asignado_a where cientifico in )

create view dire_proyect as
select nombre from cientificos where dni in
(select cientifico from asignado_a where proyecto in
(select id from proyectos where nombre like 'Celulas madre');


Me da un error de sintaxis en la linea 4 y no logro hallar el error , sé que vista multitabla y la segunda vista con subconsulta están fatal , pero de tantas modificaciones que he hecho y no me ha salido lo que quería , he desistido , si alguien me puede explicar en que fallo se lo agradezco
« Última modificación: 11 de Junio 2016, 18:29 por César Krall »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:Vistas MySQL
« Respuesta #1 en: 18 de Mayo 2016, 00:14 »
En la línea dos, pone asignado_a,cientifico es un . No una coma

saroan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Vistas MySQL
« Respuesta #2 en: 18 de Mayo 2016, 01:44 »
Eso que comentas hace referencia a las tablas ;) , sí indicas a cual te refieres mejor , ya que como indico la primera vista multitabla y subconsulta ambas son diferentes,  las he modificado varias veces y no funcionan , no sé si la segunda vista con subconsulta es la buena o sigo perdido es donde más he usado nuestra amiga lógica .

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Vistas MySQL
« Respuesta #3 en: 20 de Mayo 2016, 09:08 »
Hola!

Prueba primero una consulta directa y verifica si obtienes resultados, por ejemplo algo como

SELECT a.`nombre`
FROM `cientificos` AS a
JOIN `asignado_a` AS b ON a.`dni` = b.`cientifico`
JOIN `proyectos` AS c ON b.`proyecto` = c.`id`
ORDER BY a.`nombre` DESC

Luego si quieres vete descomponiendo la consulta en vistas

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

saroan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #4 en: 20 de Mayo 2016, 09:12 »
Gracias , pero ya esta solucionado por subconsulta lo veo mas sencillo , que todo eso que indicas  :)  tenía algún fallo de sintaxis ya solucionado

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #5 en: 20 de Mayo 2016, 09:20 »
¿Puedes poner el código con el que lo has solucionado? Eso puede ayudar a otras personas

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

saroan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #6 en: 20 de Mayo 2016, 19:13 »
 8) claro

Código: [Seleccionar]
CREATE OR REPLACE VIEW dire_proyect AS
    SELECT nombre FROM cientificos WHERE dni  IN
(SELECT cientifico FROM asignado_a WHERE proyecto not IN
(SELECT id  FROM proyectos  WHERE nombre = 'Celulas madre'));

saroan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #7 en: 21 de Mayo 2016, 13:38 »
prosigo con dudas

4. ¿En qué proyecto ha ganado más dinero 'Mara Reina'?, ¿cuánto ha ganado?. Crea la vista 'mara'
para ver lo que ha ganado Mara en cada proyecto, después usa esa vista para crear otra vista y
resolver la consulta. 'maxmara'.


Código: [Seleccionar]
create or replace view mara
select count(asignado_a.proyecto)* horas* 120 ,proyectos.nombre
from proyectos,asignado_a,cientificos
where asignado_a.cientifico = cientificos.dni
and asignado_a.proyecto = proyectos.id
group by proyectos.id;
Lo de crear una vista a partir de otra , no tengo ni idea , puede sea con select * from mara ...

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #8 en: 22 de Mayo 2016, 21:55 »
Hola!

Sí, yo pienso que crear una vista a partir de otra es utilizar una vista creada como si se tratara de una tabla y realizar la consulta sobre la vista creada previamente

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

saroan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #9 en: 22 de Mayo 2016, 23:09 »
Vale  , gracias

Y en el ejercicio que planteo tu el código lo ves correcto ? Tu harías lo mismo ?

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #10 en: 30 de Mayo 2016, 22:31 »
Perdona por no haber respondido antes, se me pasó el mensaje y ahora revisando me he encontrado que no lo había respondido, lo siento.
Responsable de departamento de producción aprenderaprogramar.com

saroan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Hacer un doble Join. Vistas MySQL create view or replace
« Respuesta #11 en: 02 de Junio 2016, 19:26 »


Tengo que crear esta bd , pero nada mas empezar , ya empiezan los errores ...

Código: [Seleccionar]
create or replace table caminos
(
nombre varchar(30),
km dec(4,1),
primary key (nombre),
constraint fk_camino foreign key (nombre) references
recorridos (nombre),
constraint fk_caminos foreign key (nombre) references
etapas (nombre)
);
Código: [Seleccionar]
ERROR 1005 (HY000): Can't create table `repaso`.`caminos` (errno: 150 "Foreign key constraint is incorrectly formed")
MariaDB [repaso]>

He probado cambiando el nombre de fk_ con varias combinaciones y posiciones y no hay manera

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".