我想在同一个表(许可证)上执行左联接,该表只提供在联接表中没有条目的许可证。但我不能得到任何结果:-(
下面是一个查询(实际上很简单):
SELECT L1.licence_type, count(L1.id) as nb_licences FROM licence L1
left JOIN licence L2 ON (L2.licence_number = L1.licence_number )
where L2.season = L1.season and L2.league_id <> L1.league_id and L2.id IS NULL
GROUP BY L1.licence_type
这样做的目的是只获得在同一年中联赛排名发生变化的许可证(为了简化查询,我故意省略了当年的条件)。
任何想法都值得赞赏。
根据建议https://stackoverflow.com/users/236345/alfabravo,这是我的结构:
CREATE TABLE IF NOT EXISTS `licence` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` int(10) UNSIGNED DEFAULT NULL,
`association_id` int(10) UNSIGNED DEFAULT NULL,
`league_id` int(10) UNSIGNED DEFAULT NULL,
`season` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,
`date_creation` datetime NOT NULL,
`licence_number` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`licence_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
`active` tinyint(1) DEFAULT NULL,
`date_validation` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
)
至于许可证类型https://stackoverflow.com/users/1144035/gordon-linoff),只是一种“竞赛”或“训练”之类的类型。。。
2条答案
按热度按时间eaf3rand1#
这样做的目的是在同一年里只获得改变联盟的许可证
如果您希望许可证在某一年内改变了联盟,我认为“group by”:
我不清楚是什么
license_type
和你的问题有关。mcdcgff02#
如果使用左联接,则不应在where子句中使用左联接表的列,以这种方式作为内部联接,然后添加到on子句中