Hace un tiempo trabajé en un proyecto de MS-SQL y recuerdo una cosa de "SI ES". Lo probé en un proyecto MySQL y no funcionó.MySQL "IS IN" equivalente?
¿Hay un equivalente? ¿Solución alternativa?
Ésta es la consulta completa Estoy intentando ejecutar:
SELECT *
FROM product_product, product_viewhistory, product_xref
WHERE
(
(product_viewhistory.productId = product_xref.product_id_1 AND product_xref.product_id_2 = product_product.id)
OR
(product_viewhistory.productId = product_xref.product_id_2 AND product_xref.product_id_1 = product_product.id)
)
AND product_product.id IS IN
(SELECT DISTINCT pvh.productId
FROM product_viewhistory AS pvh
WHERE pvh.cookieId = :cookieId
ORDER BY pvh.viewTime DESC
LIMIT 10)
AND product_viewhistory.cookieId = :cookieId
AND product_product.outofstock='N'
ORDER BY product_xref.hits DESC
LIMIT 10
Es bastante grande ... pero la parte que me interesa es:
AND product_product.id IS IN
(SELECT DISTINCT pvh.productId
FROM product_viewhistory AS pvh
WHERE pvh.cookieId = :cookieId
ORDER BY pvh.viewTime DESC
LIMIT 10)
Lo que básicamente dice que quiero la productos para estar en el "top 10" de esa sub consulta.
¿Cómo lo lograrías con MySQL (al tratar de ser eficiente)?
¿No es lo mismo que '' en MySQL? – armandino
IN es lo que está buscando, pero esto realmente debería implementarse utilizando un JOIN en lugar de una subconsulta. –
Por favor asesorar sobre el "JOIN". Porque de todos modos, mysql no permite "LIMIT" dentro de "IN". Entonces, ¿debo unirme? –