Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用Group By连接2个表_Mysql_Sql_Join_Group By - Fatal编程技术网

Mysql 使用Group By连接2个表

Mysql 使用Group By连接2个表,mysql,sql,join,group-by,Mysql,Sql,Join,Group By,poll\u opts用于存储选项的表格和poll\u-voted用于存储投票结果,pid表示投票id(唯一),oid表示选项id(仅适用于单个投票) poll\u voted[主键:pid.oid.emp] +-----+-----+-------+ | pid | oid | emp | +-----+-----+-------+ poll\u opts[主键:pid.oid] +-----+-----+---------+ | pid | oid | opt | +-----

poll\u opts
用于存储选项的表格和
poll\u-voted
用于存储投票结果,pid表示投票id(唯一),oid表示选项id(仅适用于单个投票)

poll\u voted
[主键:pid.oid.emp]

+-----+-----+-------+
| pid | oid | emp   |
+-----+-----+-------+
poll\u opts
[主键:pid.oid]

+-----+-----+---------+
| pid | oid | opt     |
+-----+-----+---------+
pid&oid类型:
int
opt
类型:
text

如果您还需要“不存在”结果,则需要一个
左外部联接
保留
轮询选项
中的所有结果,即使在
轮询投票
中未找到匹配项

查询:

select opt, count(vo.oid) 
from poll_opts po
left outer join poll_voted vo on vo.oid = po.oid and po.pid=vo.pid
where po.pid = 3 -- 3 
group by opt
输出:

opt       count(vo.oid)
Chrome    0
Firefox   0
IE        0
MS Edge   0
Opera     1
测试数据:

CREATE TABLE poll_voted    (`pid` int, `oid` int, `emp` int);

INSERT INTO poll_voted     (`pid`, `oid`, `emp`)
VALUES
    (1, 0, 1989),
    (1, 2, 1989),
    (1, 4, 1989),
    (1, 6, 1989),
    (3, 2, 1989)  
;


CREATE TABLE poll_opts     (`pid` int, `oid` int, `opt` varchar(15));

INSERT INTO poll_opts      (`pid`, `oid`, `opt`)
VALUES
    (1, 0, 'WinXP'),
    (1, 2, 'wIN7'),
    (1, 4, 'wIN 10'),
    (1, 6, 'Ubuntu'), 
    (3, 0, 'IE'),
    (3, 1, 'MS Edge'),
    (3, 2, 'Opera'),
    (3, 3, 'Chrome'),
    (3, 4, 'Firefox')
;

不要在where子句中联接表,请使用正确的联接语法。哪把钥匙?用于将投票与投票关联起来_opts@PatrickArtner可以使用pid。pid代表轮询id(唯一),oid代表选项id(仅限每次轮询)。您在寻找什么?戈登·林诺夫给了你一份声明。如果它有“错误”的输出,可能是您没有说您的预期输出是什么?您的
poll\u-voted
不包含poll1的任何oid条目,因此在加入时不会考虑所有条目,除非您使用某种对数据没有多大意义的左加入。此外,分组也没有多大意义,因为每个组只包含一个元素,所以分组对您没有任何帮助…@PatrickArtner我已经添加了详细信息。希望这有助于解决问题。