gpt4 book ai didi

android - 我如何在 SQlite/PDO 中连接表、同时聚合并将结果转换为 JSON?

转载 作者:行者123 更新时间:2023-11-30 03:40:41 24 4
gpt4 key购买 nike

我正在尝试将结果聚合从 Android 外包给 php。我无法使用连接表正确构建查询并在之后使用 JSON 对其进行编码。我想通过投票得出哪个英雄最酷的结果。所以我得到了一张英雄表,一张用户表和一张我投票的表。好的,这就是我得到的:


表英雄:id,名字

表用户:id, name

投票表:voteid, userId, heroId


我通过聚合每个相等的 heroIds 获得投票结果,然后从英雄表中获取正确的英雄名称,然后发回一个 JSON 对象 看起来像这样:

{"vote":[{"voteid":"1","heroCount":"7","heroName":" bat 侠"},{"voteid":"1","heroCount":"3 ","heroName":"海王"}]}


我有点无能为力,因为我的 sqlite 知识非常有限。这是我到目前为止在我的 .php 中得到的:

$db = new PDO('sqlite:voting.sqlite');
$stmt = $db->prepare('SELECT * FROM vote'); //<---- how to do that correctly?
$stmt->execute();

$result['vote']=$stmt->fetchAll(PDO::FETCH_ASSOC);
$json=json_encode($result);

echo $json;

谁能给我一些好的意见?已经有一段时间我一直在思考这个问题,但没有解决它:(

最佳答案

您想使用 SQL GROUP BY 子句和 LEFT JOIN。类似于以下内容:

SELECT hero.name AS heroName, COUNT(vote.userId) AS heroCount 
FROM vote LEFT JOIN hero ON vote.heroId = hero.id GROUP BY hero.id

如果您将其替换为 PHP 代码中的 SQL,它将生成类似于您的规范的 JSON 输出。 voteid 将丢失。如果 voteidvote 表的主键,那么将它放在这样的聚合结果中毫无意义。 bat 侠结果中将有 7 个 voteid

关于android - 我如何在 SQlite/PDO 中连接表、同时聚合并将结果转换为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com