我尝试将ps_products中的两列和ps_product_lang中的一列连接到PrestaShop数据库中的一个表中,但是我无法弄清楚..每当我运行下面的代码时,我只需获取名称的NULL值,反之亦然,当我切换RIGHT和LEFT时。我尝试过使用UNION ALL,在SELECT查询周围添加括号并使用WHERE,但没有任何作用。数据库运行MySQL,因此无法使用FULL OUTER JOIN而无需解决方法。 我在SQL方面不是很有经验,所以我可能在这里错过了一些东西。
代码:
SELECT
ps_product_lang.name AS 'name',
ps_product.id_product AS 'product id',
ps_product.reference AS 'reference'
FROM ps_product_lang
RIGHT JOIN ps_product ON name = reference
UNION
SELECT
ps_product_lang.name AS 'name',
ps_product.id_product AS 'product id',
ps_product.reference AS 'reference'
FROM ps_product_lang
LEFT JOIN ps_product ON name = ps_product.reference
有什么想法吗? 谢谢!
答案 0 :(得分:1)
您无法根据产品参考及其名称加入表格。产品参考是SKU,产品名称只是一个名称,具体取决于语言。您需要使用id_product
连接表。
SELECT ps_product.id_product, ps_product.reference, ps_product_lang.name
FROM ps_product
LEFT JOIN ps_product_lang ON (ps_product.id_product = ps_product_lang.id_product)
WHERE ps_product_lang.id_lang = language_id AND ps_product_lang.id_shop = shop_id
将language_id
和shop_id
替换为正确的值。
您严重缺乏关系数据库工作原理的知识,所以您应该阅读一些教程。