SQL - Para expertos

 
Vista:

Para expertos

Publicado por Victor (16 intervenciones) el 16/09/2018 10:51:01
Hola
Tengo dos tablas en Access:

Tabla 1
id Nombre
-- ------------
1 Pedro
2 Juan
3 Antonio
4 Alex

Tabla 2
id Grupo
-- ----------
1 A
1 B
1 C
2 B
3 A
4 B
4 C

La Tabla1 tiene los registros de personas, y la Tabla2 los grupos a los que pertenecen dichas pesonas, relacionadas con el campo id. La pregunta es, cómo puedo saber qué personas pertenecen sólo al gupo B y a ningún otro, es decir, una consuta que me devuelva sólo el nombre Juan.

Un saludo y gracias por todo.
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
Imágen de perfil de gilman
Val: 184
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Para expertos

Publicado por gilman (103 intervenciones) el 17/09/2018 09:38:35
Prueba:
1
2
3
4
5
6
7
8
9
SELECT TABLA1.*
  FROM TABLA1,
       (SELECT id
          FROM TABLA2
         WHERE     Grupo = 'B'
               AND id NOT IN (SELECT id
                                FROM TABLA2
                               WHERE Grupo <> 'B')) T2
 WHERE TABLA1.id = T2.id
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

Para expertos

Publicado por Victor (16 intervenciones) el 17/09/2018 17:13:14
Hola

Al intentar ejecutar la consulta me da error. ¿Puede ser porque la base de datos que estoy usando es access y la ortografía no es la adecuada?

Gracias y un saludo
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
Imágen de perfil de gilman
Val: 184
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Para expertos

Publicado por gilman (103 intervenciones) el 17/09/2018 17:34:45
Hace mucho que no trabajo con Acces, aunque debería funcionar, de todas formas ten en cuenta que que he renombrado los nombres de las tablas, ya que a mí no me 'gustan' los espacios en ellas, aunque me imagino que los nombres que has puesto no son los originales, si no es así cambia TABLA1 por [TABLA 1] y TABLA2 por [TABLA 2]

De todas formas indica cual es el error que te da, para ver si se puede solucionar.
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

Para expertos

Publicado por Victor (16 intervenciones) el 17/09/2018 18:21:39
Hola

Sí, los nombres de la tablas ya los he sustituido. El error que se produce es "Error de sintasix en la clausula FROM" y se refiere al primer FROM.
Despues de este primer FROM pones TABLA1, ¿esa coma es correcta?
Al final pones WHERE Grupo <> 'B')) T2 ¿el T2 (entiendo que es TABLA2) solo tiene un espacio despues del parenteris?

Un saludo
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
Imágen de perfil de gilman
Val: 184
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Para expertos

Publicado por gilman (103 intervenciones) el 18/09/2018 08:46:02
Despues de este primer FROM pones TABLA1, ¿esa coma es correcta?
Si, es correcta
Al final pones WHERE Grupo <> 'B')) T2 ¿el T2 (entiendo que es TABLA2) solo tiene un espacio despues del parenteris?
T2 es el pseudonimo de la subconsulta:
1
2
3
4
5
6
SELECT id
         FROM TABLA2
         WHERE    Grupo = 'B'
               AND id NOT IN (SELECT id
                            FROM TABLA2
                            WHERE Grupo <> 'B')
Que devuelve todos los id que pertenecen al grupo B, y no pertenecen a otro grupo.
La sentencia funciona correctamente, como podrás comprobar en el archivo adjunto, como ya te he dicho, no me gustan los espacios en los nombres de las tablas, ni en los campos, así que las tablas se llaman TABLA1 y TABLA2, respectivamente
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

Para expertos

Publicado por Victor (16 intervenciones) el 18/09/2018 15:52:29
Hola

Ya me funciona bien. El problema estaba en que antes de T2 no habia puesto el comando AS

Muchas gracias y un saludo
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
Imágen de perfil de gilman
Val: 184
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Para expertos

Publicado por gilman (103 intervenciones) el 18/09/2018 15:56:20
La sintaxis era para Oracle, pero me extraña lo de AS, en la BD que he puesto funciona sin poner el AS, pero bueno, si funciona, miel sobre hojuelas
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Para expertos

Publicado por Isaias (1921 intervenciones) el 17/09/2018 17:39:54
Hola

¿Pedro y Alex?, también pertenecen al grupo B
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

Para expertos

Publicado por Victor (16 intervenciones) el 17/09/2018 18:10:31
Si, tambien pertenecen al B
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Para expertos

Publicado por Isaias (1921 intervenciones) el 17/09/2018 22:31:54
Entonces porque esta afirmacion

", es decir, una consuta que me devuelva sólo el nombre Juan."
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

Para expertos

Publicado por Vic (16 intervenciones) el 18/09/2018 13:53:49
El propósito es obtener el nombre de la persona que sólo pertenece al grupo B
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