Ejemplo de consulta cruzada SQL
Una consulta cruzada es una consulta MySQL que toma datos de varias tablas que comparten campos. Por ejemplo, la tabla ps_product contiene un campo id_product, al igual que la tabla ps_product_lang.
En la siguientes consultas intervienen varias tablas de Prestashop. Hemos tenido que hacer varias consultas parecidas para nuestros módulos personalizados de la versión 1.4, y nos encontramos actualizando estos módulos a la nueva versión (1.6), con lo que hemos de revisar estas consultas.
Para leer sobre más formas de combinar las tablas (INNER JOIN, RIGHT JOIN): https://es.wikipedia.org/wiki/Join
Os invito a probar estas consultas en vuestro PHPMyAdmin.
SELECT DISTINCT ppl.id_product AS IDPRODUCT,
ppl.name AS NAME,
pp.active AS ACTIVE,
pp.reference AS REFERENCIA,
pcl.name AS NOMBRECAT
FROM ps_product_lang ppl
LEFT JOIN ps_product pp ON ppl.id_product=pp.id_product
LEFT JOIN ps_category_lang pcl ON pp.id_category_default=pcl.id_category
WHERE ppl.id_lang=3 AND pcl.id_lang=3
ORDER BY pp.reference ASC
**
SELECT DISTINCT pal.name AS PALNAME,
pal.id_attribute AS PALIDATTRIBUTE,
ppac.id_product_attribute AS PPACIDPRODATTRIBUTE,
ppa.id_product AS PPAIDPROD
FROM ps_attribute_lang pal
LEFT JOIN ps_product_attribute_combination ppac ON pal.id_attribute=ppac.id_attribute
LEFT JOIN ps_product_attribute ppa ON ppac.id_product_attribute=ppa.id_product_attribute
WHERE pal.id_lang=1
ORDER BY ppa.id_product ASC
**
SELECT DISTINCT pal.name AS PALNAME,
pal.id_attribute AS PALIDATTRIBUTE,
ppac.id_product_attribute AS PPACIDPRODATTRIBUTE,
ppa.id_product AS PPAIDPROD,
pa.id_attribute_group AS PAIDATTRIBGROUP
FROM ps_attribute_lang pal
LEFT JOIN ps_product_attribute_combination ppac ON pal.id_attribute=ppac.id_attribute
LEFT JOIN ps_product_attribute ppa ON ppac.id_product_attribute=ppa.id_product_attribute
LEFT JOIN ps_attribute pa ON pal.id_attribute=pa.id_attribute
WHERE pal.id_lang=1 AND pag.id_group=4
ORDER BY ppa.id_product ASC
Deja una respuesta