当我尝试在MySQL中使用JOIN时接收NULL

时间:2017-06-27 08:44:19

标签: mysql sql prestashop

我尝试将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

有什么想法吗? 谢谢!

1 个答案:

答案 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_idshop_id替换为正确的值。

您严重缺乏关系数据库工作原理的知识,所以您应该阅读一些教程。