Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/12/2009, 08:29
gr0uch0mars
 
Fecha de Ingreso: diciembre-2009
Ubicación: Madrid
Mensajes: 16
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Seleccionar valor de una tabla u otra para ordenar

Sobre el código que me diste, lo copié pero no devuelve los ítems que no tengan un título en ese idioma. (Además lo edité porque tenía un error en "BT.BT.title_lang"):
Código SQL:
Ver original
  1. IF(BT.BT.title_lang IS NULL...
por
Código SQL:
Ver original
  1. IF(BT.title_lang IS NULL...

Así es la Base de Datos (es sólo de pruebas):

Código SQL:
Ver original
  1. CREATE TABLE `books` (
  2.   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `title` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
  4.   PRIMARY KEY (`id`)
  5. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
  6.  
  7. INSERT INTO `books` VALUES(1, 'A Study in Scarlet');
  8. INSERT INTO `books` VALUES(2, 'Scandal in Bohemia');
  9.  
  10. CREATE TABLE `books_titles` (
  11.   `book_id` INT(10) UNSIGNED NOT NULL,
  12.   `book_title` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
  13.   `title_lang` CHAR(2) COLLATE utf8_unicode_ci NOT NULL
  14. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  15.  
  16. INSERT INTO `books_titles` VALUES(2, 'Escándalo en Bohemia', 'es');
  17. INSERT INTO `books_titles` VALUES(2, 'La Aventura del Escándalo en Bohemia', 'es');
  18. INSERT INTO `books_titles` VALUES(2, 'Un scandale en Bohême', 'fr');
  19. INSERT INTO `books_titles` VALUES(2, 'Kuningas hädässä', 'fi');
  20. INSERT INTO `books_titles` VALUES(1, 'Estudio en Escarlata', 'es');
  21. INSERT INTO `books_titles` VALUES(1, 'Estudio en Rojo', 'es');
  22. INSERT INTO `books_titles` VALUES(1, 'Étude en rouge', 'fr');

Además, como un libro puede cambiar ligeramente de título (en este caso sí, aunque no debiera ser), la tabla books_titles tiene varias entradas para un mismo book_id y el mismo title_lang. Me doy con un canto en los dientes que pueda asociar un único título correctamente, porque es posible que al encontrar varios resultados coincidentes no sepa qué devolver como book_title.

Gracias ayudarme en este tema. A ver si encontramos la solución

Un saludo.