YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Spanish, Mexican subtitles

← PS 08-21 JOINS

Get Embed Code
4 Languages

Showing Revision 2 created 09/22/2013 by Manuela Sanchez.

  1. Pasemos a un tema que
    olvidaremos rápidamente.
  2. Se llama JOINS o consultas combinadas.
  3. Es un tipo de consulta SQL
    sobre múltiples tablas.
  4. Tenemos la tabla Link
  5. con la que hemos estado
    trabajando toda la clase, y es así.
  6. Las columnas son: ID, votos, ID del
    usuario que lo envió,
  7. fecha, título, URL.
  8. Vamos a inventar valores para esto.
  9. Ahora quisiera hablar de
    la columna del ID del usuario.
  10. Como ya les mencioné,
  11. si tenemos otra tabla llamada
    User, que es algo así,
  12. tiene una columna para el ID y una columna
    para el nombre, la contraseña y la fecha,
  13. el ID del usuario en la tabla Link
  14. hace referencia a la columna
    ID de la tabla User.
  15. Deben coincidir siempre
  16. si quieren que sea todo
    coherente en su sistema.
  17. Para cada ID del usuario en la tabla Link,
  18. debe haber un usuario
    válido en la tabla User.
  19. Una cosa que podemos hacer en la mayoría
    de las bases de datos SQL se llama JOIN.
  20. que es una sentencia SQL
    que relaciona dos tablas.
  21. Tenemos una sentencia SQL que se ve así.
  22. SELECT FROM la tabla link
  23. WHERE user_id = 22.
  24. Eso mostrará todos los enlaces
    enviados por este usuario,
  25. suponiendo que haya más de uno.
  26. ¿Y si no sabemos el ID del usuario?
  27. ¿Y si queremos elegir de la tabla Link
  28. todos los enlaces enviados por
    usuarios de nombre Spez?
  29. Hay varias formas de hacerlo.
  30. Primero se podría buscar
  31. el ID del usuario de
    la persona llamada Spez,
  32. tomar el ID del usuario,
    y ejecutar la consulta SQL.
  33. Se pueden hacer dos consultas.
    Se vería algo así.
  34. Una consulta para traer el ID
    de la tabla User
  35. del usuario cuyo nombre sea igual a Spez,
  36. y luego utilizar ese ID
    en la segunda consulta.
  37. Pero existe otra manera
    de realizar esta consulta.
  38. En lugar de ejecutar dos consultas,
  39. podría combinarlas para formar una sola.
  40. En lugar de FROM link, podemos
    cambiarlo a link, user,
  41. lo que buscará en ambas tablas.
  42. Y no queremos que nos traiga
    todos los atributos,
  43. queremos conservar los mismos
    resultados de la consulta.
  44. Por lo tanto no debemos poner
    SELECT * FROM link, user
  45. debemos poner SELECT link.*,
  46. lo que solo nos traerá
    las columnas de la tabla Link.
  47. Luego debemos cambiar la condición WHERE
  48. para unir las dos tablas:
  49. WHERE user_id = user.id
  50. También puede ser link.user_id
  51. para incluir los nombres de las tablas
    en todas las propiedades
  52. y que así quede más claro.
  53. Debo agregar otra condición:
  54. AND user.name = 'Spez'
  55. ¿Esto qué es lo que hace?
  56. Selecciona todas las columnas de link.*
  57. de las tablas Link y User
  58. en las que el nombre de usuario
    sea igual a Spez
  59. y link.user_id sea igual a user.id
  60. Realiza lo que se llama
    una consulta JOIN o combinada.
  61. El motor SQL decidirá qué
    tabla revisa primero;
  62. en este caso seguramente
    revisará primero la tabla User,
  63. para encontrar primero el usuario Spez
    y luego todos los enlaces
  64. cuya propiedad user_id
  65. sea igual al campo ID en la tabla User.
  66. Esto es bastante útil.
  67. Dije que íbamos a aprender algo
    que olvidaríamos rápidamente
  68. porque no es común utilizar JOINS
  69. al escribir software web.
  70. Es algo que se trata en la mayoría
    de tutoriales de SQL,
  71. pero por motivos que veremos más adelante,
  72. JOINS no funciona muy bien en los problemas
    que resolveremos al escribir páginas web.
  73. Pero deben familiarizarse con
    estas consultas, saber lo que son,
  74. quizá los necesiten en algún momento,
  75. pero muchas veces... bueno, como dije,
  76. ya diremos más adelante
    por qué no queremos usar JOINS.
  77. Pasemos a algo nuevo.