首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用联接查询中的数据创建列

使用联接查询中的数据创建列
EN

Stack Overflow用户
提问于 2018-03-29 19:37:36
回答 2查看 31关注 0票数 0

我有两张桌子,

一份附有下列物品:

ic_items

代码语言:javascript
运行
复制
 item_id  name                description 

      1   Pepperino           Hot sauce from Argentina
      2   Vamos el Couchiero  Hot sauce from Spain  

1票:(火焰=1票)

ic_flames

代码语言:javascript
运行
复制
  flame_id  item_id

     1         1
     2         1
     3         2

现在我想把它们连接起来。所以像这样的东西加入了第一张桌子:

代码语言:javascript
运行
复制
  item_id  name               description                 flame_counter

      1   Pepperino           Hot sauce from Argentina         2
      2   Vamos el Couchiero  Hot sauce from Spain             1

我使用以下查询:

代码语言:javascript
运行
复制
SELECT ic_items.item_id, COUNT(ic_flames.flame_id) AS flame_counter
FROM ic_flames 
JOIN ic_items ON ic_items.item_id=ic_flames.item_id
GROUP BY ic_items.item_id

当我在phpmyadmin上填写这个查询时,我会得到一个带有flame_counter的表,但是当我进入ic_items时,我看不到flame_counter。

如何将flame_counter放到ic_items表中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-29 19:47:38

您可以执行一个子查询来计数ic_flames中的表条目,这些条目具有当前的item_id。不过,更好的做法是,只对ic_flames实施反加入,而不是为每一次投票增加一条新的路线。下面是一个没有经过测试的案例。希望它有帮助;)

代码语言:javascript
运行
复制
SELECT   ic_items.item_id, 
         ic_items.name, 
         ic_items.description,
         (
         SELECT   COUNT(*) 
         FROM     ic_flames AS sub_ic_flames
         WHERE    sub_ic_flames.item_id = ic_items.item_id
         GROUP    BY sub_ic_flames.item_id
         ) AS flame_counter
FROM     ic_items

//编辑

若要在表flame_counter中更新ic_items,请使用以下查询。

代码语言:javascript
运行
复制
UPDATE   ic_items
SET      flame_counter = (
             SELECT   COUNT(*) 
             FROM     ic_flames AS sub_ic_flames
             WHERE    sub_ic_flames.item_id = ic_items.item_id
             GROUP    BY sub_ic_flames.item_id
         )
票数 0
EN

Stack Overflow用户

发布于 2018-03-29 19:48:41

这里的选择就是这样,选择。如果要将它们添加到现有表(即更新语句 )中的现有项中,如果要为这些值创建一个新列,则需要一个ALTER语句。在您的例子中,alter需要放在第一位,您需要将您的联接与更新结合起来,它看起来如下所示:

代码语言:javascript
运行
复制
ALTER TABLE table_name
ADD flame_counter int(250);

UPDATE ic_items
SET flame_counter = COUNT(flames.flame_counter)
FROM (
    SELECT ic_items.item_id, COUNT(ic_flames.flame_id) AS flame_counter
        FROM ic_flames 
    JOIN ic_items ON ic_items.item_id=ic_flames.item_id
    GROUP BY ic_items.item_id
) AS flames;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49563803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档