Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/12/2009, 10:14
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Seleccionar valor de una tabla u otra para ordenar

La consulta funciona si hay una relación entre las dos tablas. Esta relación esta dada por un campo (id en un caso, book_id en la otra). Pero si ingresas en books_titles un libro sin que exista una relación con books, ese libro no se listará. Debe existir el mismo valor de id que de book_id.
Este problema (meter un libro en books_titles que no exista en books) se podría solucionar usando tablas InnoDB en lugar de MyISAM, ya que las InnoDB poseen restricciones de clave foránea, lo que permitiría evitar una entrada huérfana en books_titles .

Se supone que en tu modelo, books conserva el listado de todos los libros, estén o no en books_titles. Si no es así, estás cometiendo un error de diseño en alguna parte, porque debería haber al menos una tabla que los contenga todos, como una tabla de stock en un almacen.

En cuanto a LIKE, su traducción literal sería "como", "parecido a" o "que contenga". No funciona una igualdad, porque una diferencia de un caracter es suficiente para que la comparación de FALSE. En otras palabras, "Estudio en Rojo" es diferente de "Estudio en Roj", en cambio "Estudio en Rojo" sí contiene a "Estudio en Roj".
LIKE se utiliza, junto con los comodines, para encontrar coincidencias parciales en una cadena, cuando no conoces exactamente la cadena completa, o quieres recuperar todas las que semejen.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)