Sin discutir las aportaciones de nadie te recomiendo la lectura de las fuentes
http://dev.mysql.com/doc/refman/5.0/es/union.html http://dev.mysql.com/doc/refman/5.0/es/join.html
Union y JOIN (con la sintaxis que sea, pero mejor usa JOIN...ON)
NO TIENEN NADA QUE VER
Por otro lado esta query
Código MySQL:
Ver originalSELECT alumnos1.nombre
,alumnos1.edad
, alumnos2.nombre,alumnos2.edad
va a dar un error por ambigüedad de campos puesto que el campo "edad" de la clausula WHERE puede ser de las dos tablas y no defines cual quieres evaluar.
Segundo, cuando hayas solucionado lo anterior, como no estableces ninguna relación entre las dos tablas va a generar un producto cartesiano entre las dos tablas, lo que puede llegar a generar una cantidad ingente de registros.
(Todos los registros de la primera tabla emparejados con todos los de la segunda,
no veas si son 17 tablas)
Y esta
Te va a retornar la union de TODOS los registros de alumnos1 que tengan 20 años y el primero que encuentre de esa misma edad de alumnos2 (no siempre será el mismo!!!).
Además la edad es algo no estático, con lo que si tardas mucho te dará los mismos registros pero los alumnos quizás ya tengan 21. (Hay que guardar la fecha de nacimiento, nunca la edad).
La solución usando solo Sql es UNION pero yo investigaría alguna con programación externa que no obligue al servidor a leer la 17 tablas, si lo que quieres es encontrar un caso cuando hayas encontrado el primero no hace falta que busques mas, no?
Por otro lado 17 tablas con los mismos campos me hace pensar en algún error de diseño.