Problema con outer join

Iniciado por KaRaLLo, 26 Febrero 2012, 16:13 PM

0 Miembros y 1 Visitante están viendo este tema.

KaRaLLo

Hola tengo una problemilla con esta consulta :

8.- Visualiza los nombres de los alumnos de la tabla ALUMNO que no estén en la tabla ANTIGUO ni en la tabla NUEVO.


ALUMNO;
+----------+------+------------+
| NOMBRE   | EDAD | LOCALIDAD  |
+----------+------+------------------+
| JUAN         |   20    | VIGO       |
| MANUEL     |   16    | PONTEAREAS |
| FERNANDO |   32 | TUI                   |
| PACA         |   25 | SALAMANCA     |
| PEPA         |   19 | LUGO               |
+----------+------+------------+


ANTIGUO;
+----------+------+-----------+
| NOMBRE   | EDAD | LOCALIDAD |
+----------+------+-----------+
| PEPA          |   19 | LUGO      |
| FERNANDO  |   32 | TUI       |
| JULIA         |   19 | CANARIAS  |
| CHONI       |   22 | MADRID    |
| PEPE         |   43 | BARCELONA |
+----------+------+-----------+


NUEVO;
+----------+------+------------+
| NOMBRE   | EDAD | LOCALIDAD  |
+----------+------+------------+
| MANUEL     |   16 | PONTEAREAS |
| RODRIGO  |   32 | CORU�A        |
| PILI          |   43 | POLLO            |
| FERNANDO |   32 | TUI               |
+----------+------+------------+

Sé que hay que utilizar outer join pero no soy capaz de escribir bien la sintaxis y llevo ya horas ralladísimo.

Si útilizo por ejemplo los left y right outers join y quitando los NULL me acaba devolviendo los que coinciden y necesito justamente todos los que NO se repitan



Gracias :)
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Anonymous250

Select DiSTINCT ALUMNO.NOMBRE
FROM ALUMNO ,ANTIGUO,NUEVO
WHERE ALUMNO.NOMBRE NOT IN
("ANTIGUO.NOMBRE,NUEVO.NOMBRE");

Creo que esta mal, pero es algo asi claro que se puede hacer diferente con lo que comentas los outer joins y demas.
No se me dan bien los outer join ni inner join nunca les coji el truco,pero,si te sirve lo que acavo de pensar ,pues nose,al menos para que cojas la idea.

Yo tenia que hacer un examen de esto  :¬¬ hahahaha,valla hombre tengo que repazarlo.

KaRaLLo

Diosss llevo 2 semanas con esta consulta y nada de nada he probado con outers, con not in etcccc....

Esto es lo mas "limpio" que he sacado pero.... nada :

Código (sql) [Seleccionar]

SELECT ALUMNO.NOMBRE
FROM ALUMNO,ANTIGUO,NUEVO
WHERE ALUMNO.NOMBRE
AND ALUMNO.NOMBRE=NUEVO.NOMBRE
AND ALUMNO.NOMBRE=ANTIGUO.NOMBRE
NOT IN (ANTIGUO.NOMBRE,NUEVO.NOMBRE)
Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona

HdM

Veo que tienes un cacao montao importante. La última consulta que pones no hay por dónde cogerla.

Creo que no tienes claro el uso de las subconsultas. ¿Cómo sacarías los nombres de alumnos que no estén en antiguo? Debes hacer una consulta dentro del WHERE que extraiga los nombres de esa tabla. Sabiendo eso y con el uso del NOT IN ya sabes como añadir la otra condición solicitada.

Saludos.

- Nice to see you again -