简体   繁体   English

SQL 两个结果来自两列中的一列

[英]SQL Two result from one column in 2 columns

i have checked some similar issues in the forum but i can't seems to get it to work properly.我在论坛中检查了一些类似的问题,但我似乎无法让它正常工作。 i'm on phpmyadmin我在 phpmyadmin

i need to get a result like that :我需要得到这样的结果:

Reference |参考 | ProductNameEnglish |产品名称English | ProductNameFrench产品名称法语

What's blocking me is to do 2 requests on the same column (pl.name) :/阻止我的是在同一列(pl.name)上执行 2 个请求:/

Here is my query for now :这是我现在的查询:

SELECT
p.reference AS Reference,

(SELECT pl.name
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
WHERE p.active = 1
AND pl.id_lang = 2) AS ENname,

(SELECT pl.name
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
WHERE p.active = 1
AND pl.id_lang = 1) AS FRname

FROM ps_product p

You don't need the join in the subqueries:您不需要在子查询中加入:

SELECT p.reference AS Reference,
       (SELECT pl.name
        FROM ps_product_lang pl 
        WHERE p.id_product = pl.id_product AND
              p.active = 1 AND
              pl.id_lang = 2
       ) AS ENname,
       (SELECT pl.name
        FROM ps_product_lang pl 
        WHERE p.id_product = pl.id_product AND
              p.active = 1 AND
              pl.id_lang = 1
       ) AS FRname
FROM ps_product p;

This assumes that only one row matches the subqueries.这假设只有一行与子查询匹配。 You may need to limit the results to a single row if that is not the case.如果不是这种情况,您可能需要将结果限制为一行。

SELECT
  p.reference AS Reference,
  pl.name as ENname,
  pf.name as FRname
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product and pl.id_lang = 1)
LEFT JOIN ps_product_lang pf ON (p.id_product = pf.id_product and pf.id_lang = 2)
WHERE p.active = 1

I might have switched English and French, but that should be easy to fix....我可能已经切换了英语和法语,但这应该很容易解决....

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM