y te falto explicar el outer join, cross join, left join y el left outer join, y hay te creo.<br><br>salu2<br><br>todo caso en la pagina que haces referencia sale como join la simple consulta que puse.<br><br>ahora toda la explicacion que te mandaste, ¿¿¿te sirve con un 386 con 16 mb de ram???.
<br><br><br><div><span class="gmail_quote">2006/11/9, Rodrigo Fuentealba <<a href="mailto:darkprox@gmail.com">darkprox@gmail.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2006/11/9, Alberto Rivera <<a href="mailto:rivera.alberto@gmail.com">rivera.alberto@gmail.com</a>>:<br>> Rodrigo Fuentealba escribió:<br>> > Estimado:<br>> ><br>> > Antes que todo, usa ADOdb (<a href="http://adodb.sourceforge.net">
adodb.sourceforge.net</a>), así podrás evitarte<br>> > mucho escándalo con el desorden.<br>> ><br>> Ok gracias, no lo conocia y al parecer está bastante más sencillo de<br>> utilizar que el crudo php con mysql, ahora conoces alguna restricción de
<br>> plataforma o algo, ideal .. gracias ah :)<br>><br><br>Restricción de plataforma? Sí, no he podido correrlo en mi tetris...<br><-! De hecho puedes trabajar hasta en Access con IIS y PHP, por lo que<br>restricciones difícilmente hay. Puedes usar múltiples drivers.
<br><br>Ahora, un error:<br><br>Cito:<br><br>"a que se refiere con join, tienes tabla 1 con el rut del alumno y en<br>la segunda tabla tambien tienes el rut del alumno creo yo, entonces<br>tienes que hacer una consulta mas menos asi. select <campos> from
<br>tabla1,tabla2 where tabla1.rut = tabla2.rut"<br><br>Eso no es usar joins, eso es hacer una consulta común y silvestre a<br>dos tablas de la base de datos, y normalmente lo haces con alias.<br><br>Un join es algo así:
<a href="http://dev.mysql.com/doc/refman/5.0/en/join.html">http://dev.mysql.com/doc/refman/5.0/en/join.html</a><br>, y me gustaría mostrar el efecto:<br><br>select hola from tabla 1 left join tabla2 on tabla1.datos = tabla2.datos
;<br><br>Mostremos el efecto con 100 tablas para tabla1 y tabla2:<br><br>Con join:<br><br>100 datos de tabla 1 -> 100 operaciones de comparación y copia -> 100<br>registros en memoria.<br><br>100 datos de tabla 2 -> 100 operaciones de comparación y copia -> 100
<br>registros más en memoria.<br><br>Ahora, para descartar los datos, 100 contra 100: 10000 operaciones de<br>comparación, + los registros resultantes en memoria.<br><br>Una query normal:<br><br>100 datos de tabla 1 -> 100 operaciones de comparación y copia -> N
<br>(<=100) registros en memoria.<br><br>100 datos de tabla 2 -> 100 operaciones de comparación y copia -> N<br>(<=100) registros más en memoria.<br><br>La diferencia hasta aquí es que ya no tenemos 100 registros en
<br>memoria, sino los registros que cumplan la condición específica que le<br>estamos dando. Luego, por alguna operación de cuenta, comparamos la<br>tabla mayor con la tabla menor. Tenemos entonces, que la tabla mayor<br>
tiene (luego del filtrado) tenga 40 registros en memoria, y la menor,<br>unas 20... El resultante de las operaciones de copia y comparación es<br>40 x 20 = 800.<br><br>800 contra 10000, es harta la diferencia de carga, y es harta la
<br>diferencia, dependiendo de qué tipo de filtrado se haga. En el peor de<br>los casos retornaremos 10000 registros, si es que no existe relación<br>entre ellos, que es lo mismo que JOINear ambas tablas<br>indiscriminadamente, en el cual en el 100% de los casos tendrás ese
<br>rendimiento.<br><br>En mi tiempo trabajando con bases de datos, he visto malas formas de<br>trabajar, pésimas formas de trabajar y el uso indiscriminado de joins,<br>debido a que utilizas mucha memoria y los mismos algoritmos que usas
<br>sobre datos comunes y corrientes bien indexados... pero sobre<br>cantidades de código más grande. Consideren siempre antes de<br>planificar una consulta compleja el cómo van a consumir menor cantidad<br>de memoria.<br>
<br>¿Para qué sirve un join? si no tienes un buen método de optimización<br>de consultas, solamente para llenar la memoria de datos.<br><br>Ahora, ¿tablescanning? (recorrer N registros por query, siendo que no<br>todos los vas a usar) Se evita con índices, gracias y buenas noches!
<br><br>--<br>Rodrigo Fuentealba Cartes<br>Desarrollador de Sistemas Web<br>Registered User 387639 - <a href="http://counter.li.org">http://counter.li.org</a><br><br></blockquote></div><br>