MySQL - vistas con multitabla y subconsulta

 
Vista:
Imágen de perfil de Antonio

vistas con multitabla y subconsulta

Publicado por Antonio (12 intervenciones) el 18/05/2016 12:12:08
disenocientificostema9

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'.

1
2
3
4
5
6
7
8
9
10
11
12
13
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 segunda vista con subconsulta, 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
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
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

vistas con multitabla y subconsulta

Publicado por Gonzalo (103 intervenciones) el 18/05/2016 13:09:15
1) No es CREATE VIEW OR REPLACE, es CREATE OR REPLACE VIEW.
2) Cierra los paréntesis correctamente. AL menos DOS no lo estaban.
3) No hagas Copy+Paste de sentencias sin fijarte QUE copias. Una estaba mal copiada, o al menos incompleta.
4) NO USES LIKE donde deba ir un "=". El algoritmo interno no es el mismo. Y preferentemente NO USES LIKE SI PUEDES EVITARLO.

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
37
38
39
40
41
CREATE OR REPLACE VIEW dire_proyect AS
    SELECT
        id
    FROM
        proyectos,
        asignado_a,
        cientificos
    WHERE
        asignado_a.proyecto = proyectos.id
            AND asignado_a.cientifico = cientificos.dni;
 
 
 
CREATE OR REPLACE VIEW dire_proyect AS
    SELECT
        nombre
    FROM
        proyectos
    WHERE
        id IN (SELECT
                proyecto
            FROM
                asignado_a);
 
CREATE OR REPLACE 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 = 'Celulas madre'));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Antonio

vistas con multitabla y subconsulta

Publicado por Antonio (12 intervenciones) el 20/05/2016 21:08:59
Vale gracias prosigo ...
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'.

1
2
3
4
5
6
create or replace view mara
select count(asignado_a.proyecto)* horas * 80 ,proyectos.nombre
from proyectos,asignado_a,cientificos
where asignado_a.cientifico = cientificos.dni
and asignado_a.proyecto = proyectos.id
group by asignado_a.proyecto;

1
2
3
4
5
6
7
8
9
MariaDB [cientificos]> create or replace view mara
    -> select count(asignado_a.proyecto)* horas * 80 ,proyectos.nombre
    -> from proyectos,asignado_a,cientificos
    -> where asignado_a.cientifico = cientificos.dni
    -> and asignado_a.proyecto = proyectos.id
    -> group by asignado_a.proyecto;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'select count(asignado_a.proyecto)* horas * 80 ,proyectos.nombre
from proyectos,a' at line 2
MariaDB [cientificos]>

También he probado con 120 , ya que es el dato en horas que existe y nada ...
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