0

我有一张像这样的桌子:

id_rel | id_art | id_fam | id_cat | id_scat | id_marca | id_model | id_year

  1      cw001      10       11        21       null       null       null
  2      cw001     null     null      null      233        455        466  

对于特定的搜索查询,我需要将其组合在 mysql 视图中,如下所示:

id_rel | id_art | id_fam | id_cat | id_scat | id_marca | id_model | id_year

  1      cw001      10       11         21       233       455        466 

所以我必须“删除”空值并组合这些值。有人可以解释它是否可行以及最好的方法吗?

第一张表的解释:这里我有一些产品(id_art)和家庭、类别、子家庭关系以及第二行品牌模型年份关系。使用此表的网站我有两种搜索,搜索家庭类别子家庭或搜索品牌型号年份,我需要将它们组合起来,所以当我在一个产品系列中时,我必须能够查看与文章相关的所有型号、品牌和年份。

我希望清楚,对不起我的英语谢谢

4

2 回答 2

2

在 MySQL 中,该MAX()函数将丢弃null值。因此,您可以执行以下操作:

SELECT
    id_rel,
    id_art,
    MAX(id_fam),
    MAX(id_cat),
    MAX(id_scat),
    MAX(id_marca),
    MAX(id_model),
    MAX(id_year)
FROM
    table_name
GROUP BY
    id_art;

当然,这假设这些值永远只是1null。如果你开始引入其他价值观,[可能]会更难一些。

于 2013-06-04T17:14:14.067 回答
0
SELECT
    id_rel,
    id_art,
    COALESCE(SUM(id_fam),0),
    COALESCE(SUM(id_cat),0),
    COALESCE(SUM(id_scat),0),
    COALESCE(SUM(id_marca),0),
    COALESCE(SUM(id_model),0),
    COALESCE(SUM(id_year),0)
FROM
    table_name
GROUP BY
    id_art;

将求和或给出 0。

你能举一个更复杂的例子来确保我们得到正确的 SQL

于 2013-06-04T17:31:55.370 回答