我有两张桌子,
一份附有下列物品:
ic_items
item_id name description
1 Pepperino Hot sauce from Argentina
2 Vamos el Couchiero Hot sauce from Spain
1票:(火焰=1票)
ic_flames
flame_id item_id
1 1
2 1
3 2
现在我想把它们连接起来。所以像这样的东西加入了第一张桌子:
item_id name description flame_counter
1 Pepperino Hot sauce from Argentina 2
2 Vamos el Couchiero Hot sauce from Spain 1
我使用以下查询:
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表中?
发布于 2018-03-29 19:47:38
您可以执行一个子查询来计数ic_flames
中的表条目,这些条目具有当前的item_id
。不过,更好的做法是,只对ic_flames
实施反加入,而不是为每一次投票增加一条新的路线。下面是一个没有经过测试的案例。希望它有帮助;)
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
,请使用以下查询。
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
)
发布于 2018-03-29 19:48:41
这里的选择就是这样,选择。如果要将它们添加到现有表(即更新语句 )中的现有项中,如果要为这些值创建一个新列,则需要一个ALTER语句。在您的例子中,alter需要放在第一位,您需要将您的联接与更新结合起来,它看起来如下所示:
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;
https://stackoverflow.com/questions/49563803
复制相似问题