SQL -> JOIN

D

Hola vereis estoy empezando con sql lite y queria saber cual es la diferencia entre JOIN, INNER JOIN y OUTER JOIN a ver si alguien q sepa de sql puede ayudarme un poco muchas gracias.

PD: Lo pongo aqui pq ya lo puse en software hace 2 semanas y de 15 personas q lo han leido no me respondio ni una....

Netzach

http://www.media-vida.net/verforo.php?fid=9

Editado: lógicamente el tema estaba en otro foro.

javithelong

Tio, tan dificil es poner join en google y que te salga la página de la wikipedia y leertelo? es bastante facil...

http://es.wikipedia.org/wiki/JOIN

De ná, tio vago

D

#3 Tio sera pq ya he buscado y por mucho q lea (seguro q no entiendes una mierda de lo q hay ahi) no consigo comprenderlo puesto q hago pruebas tanto con inner join como con outer join y me sale exactamente lo mismo por eso quiero q alguien me lo explique de otra forma...

De ná, tio listo

cabron

Así explicado por muy encima.

Una join simplemente consiste en realizar el producto cartesiano de varias tablas, te devuelve todos los registros de una tabla, combinados con todos los registros de las otras tablas con las que se hace la join.

Si no quieres absolutamente todos las combinaciones, tienes que poner un WHERE, donde pongas una condición para que se devuelvan solo ciertas combinaciones.

Digamos que INNER JOIN, OUTER JOIN, y LEFT JOIN, son como "wheres predefinidos", es decir, te devuelven ciertas combinaciones sin que tengas que construir tu propia condición del WHERE.

El significado exacto de cada una, pues es algo que puedes leer en mil sitios.

D

se lo q hace el join, lo q ocurre q cuando yo pongo inner join y outer join me sale exactamente lo mismo, cuando se supone q uno es interno y otro externo y deberia diferenciarse en algo.

cabron

Si te sale lo mismo es por los datos que tienes en tu tabla.

Es como si hago

SELECT edad
FROM persona
WHERE edad > 4

Y me sale

edad
5

y luego hago

SELECT edad
FROM persona
WHERE edad < 6

Y me sale

edad
5

¿Cómo es posible que me salga lo mismo con dos querys diferentes? Pues por los datos que tengo metidos en la tabla..

INNER JOIN solo te cruza las dos tablas, y te devuelve solos registros que cumplen la condicion.

OUTER JOIN te cruza las dos tablas, te devuelve todos los registros de una de ellas (dependiendo de si es LEFT o RIGHT) y de la otra tabla solo te devuelve los que cumplan la condición.

Suponiendo que estés haciendo bien las consultas, si te devuelve lo mismo, es por los datos que tienes en tu tabla.

Usuarios habituales