Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: saroan en 18 de Mayo 2016, 00:06

Título: Hacer un doble Join. Vistas MySQL create view or replace group by consultas
Publicado por: saroan en 18 de Mayo 2016, 00:06
(http://115.imagebam.com/download/oUN_SjUWrW5zJHG5RH2X4Q/48425/484242649/dise%C3%83%C2%B1ocientificostema9.jpg)

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
Título: Re:Vistas MySQL
Publicado por: Lorenzo31 en 18 de Mayo 2016, 00:14
En la línea dos, pone asignado_a,cientifico es un . No una coma
Título: Re:Vistas MySQL
Publicado por: saroan 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 .
Título: Re:Vistas MySQL
Publicado por: César Krall 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!
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: saroan 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
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: César Krall 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!
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: saroan 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'));
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: saroan 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 ...
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: César Krall 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!
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: saroan 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 ?
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: César Krall 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.
Título: Re:Hacer un doble Join. Vistas MySQL create view or replace
Publicado por: saroan en 02 de Junio 2016, 19:26
(http://115.imagebam.com/download/YPvESpAhs_63Z_ND9faN0Q/48730/487296680/dise%C3%83%C2%B1ovuelta.jpg)

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