Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/06/2012, 12:38
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: 17 años
Puntos: 2658
Respuesta: Consulta por inner join y find in set

Francamente no tengo idea de dónde puedes haber sacado un ejemplo de uso del INNER JOIN utilizando FIND_IN_SET()... Porque ni siquiera tienen cómo relacionarse.

FIND_IN_SET() devuelve , al menos en MySQL, un valor entero positivo que representa la posición en que un valor A se encuentra dentr de un vlaor B, siendo el valor B una cadena de texto con valores separados por comas ('1, 2, 56, 98, 0').
Cómo puedes encajar eso en un INNER JOIN me cuesta entenderlo.
Si fuese que el campo de busqueda es un VARCHAR, que contiene un conjunto de valores separados por comas, eso sería uncampo multivaluado, y ya deberías saber que esos campos están prohibids en las bases de datos relacionales. Son un atentado a la integridad referencial y a la consistencia de datos, además de dar resultados erráticos en las consultas.

En definitiva, tu consulta (poniendo los alias que no pusiste), quedaría mas o menos así:
Código MySQL:
Ver original
  1.     DISTINCT
  2.     P.id_prd,
  3.     P.sku_prd,
  4.     P.idctg_prd,
  5.     P.name_prd,
  6.     P.description_prd,
  7.     P.money,
  8.     P.price_prd,
  9.     P.visible_prd,
  10.     P.image_hlg_prd
  11.     products_prd P
  12.     INNER JOIN categories_ctg C ON FIND_IN_SET(C.id_ctg, P.idctg_prd, C.idctg_ctg)
  13.     (C.id_ctg != 107 OR C.idctg_ctg != 23 OR C.idctg_ctg != 107)
  14.     AND P.visible_prd =1
  15.     AND highlight_home_prd = 1
  16.     AND (date_publication <= NOW()
  17.     OR date_publication IS NULL)
  18.     AND
  19.     (date_end >= NOW() OR date_end IS NULL)
Pero para poder darte una sugerencia tenemos que revisar ese JOIN que has creado, y volverlo algo coherente y lógico.
¿Puedes explicar mejor cuáles son los campos que se relacionan entre ambas tablas y cómo lo hacen?
Porque tal pareciera que tienes categorías con subcategorías, y cada producto pertenece a una u otra.
¿Es así?
Si eso es lo que tienes, la consulta está mal escrita, porque para realizara con ese esquema la tabla de categorías se debe invocar dos veces, de modo de recrear la relación consigo misma.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)