Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 如何在Django中对子查询使用GroupConcat_Mysql_Django_Orm_Group Concat - Fatal编程技术网

Mysql 如何在Django中对子查询使用GroupConcat

Mysql 如何在Django中对子查询使用GroupConcat,mysql,django,orm,group-concat,Mysql,Django,Orm,Group Concat,我有一个应用程序在不同的音乐场景中存储播放的音乐。我的模型如下所示: class PlaylistItem(models.Model): played_at = models.DateTimeField(_('played at')) station = models.ForeignKey(Station, on_delete=models.CASCADE) log_track = models.ForeignKey('LogTrack', on_delete=model

我有一个应用程序在不同的音乐场景中存储播放的音乐。我的模型如下所示:

class PlaylistItem(models.Model):
    played_at = models.DateTimeField(_('played at'))
    station = models.ForeignKey(Station, on_delete=models.CASCADE)
    log_track = models.ForeignKey('LogTrack', on_delete=models.CASCADE)

class LogTrack(UpdateInfo):
    track = models.ForeignKey(Track, on_delete=models.CASCADE, blank=True, null=True)

class Track(UpdateInfo):
    artist = models.CharField(_('artist'), max_length=150)
    tracktitle = models.CharField(_('tracktitle'), max_length=150)
曲目模型是一个由LogTrack歌曲的标准化名称组成的模型

我想要的是一段时间内不同电台(匹配主站)之间重叠歌曲的概述。我想知道这首歌在不同的电台播放了多少次,按主站的顺序排列,还有这首歌在多少电台播放过(按降序排列)。 这个想法是:

我想到这样的输出:

Master Station    | Station B | Station C
-----------------------------------------
Track 1 (5 plays) | 8 plays   | 3 plays
Track 2 (2 plays) | No        | 5 plays
Track 3 (2 plays) | No        | No
或作为数据库输出:

track_id | station__count | groupconcat(track, station, play_count)
-------------------------------------------------------------------
1        | 2              | (1, 22, 3), (1, 29, 5)
2        | 1              | (2, 29, 4)
在MySQL中,我有一个查询(可能过于复杂):

我没法把这个输入Django ORM。到目前为止我有。但是,当我在子查询中使用它时,我不知怎么地迷路了

PlaylistItem.objects.filter(
    played_at__gte=datetime(2020,11,2,10),
    station_id__in=[22,29]
).values('log_track__track_id', 'station_id').annotate(
    played_per_track_and_station=Concat(
        'log_track__track_id',
        Value('-'),
        'station_id',
        Value('-'),
        Count('played_at')
    )
).values('played_per_track_and_station')
PlaylistItem.objects.filter(
    played_at__gte=datetime(2020,11,2,10),
    station_id__in=[22,29]
).values('log_track__track_id', 'station_id').annotate(
    played_per_track_and_station=Concat(
        'log_track__track_id',
        Value('-'),
        'station_id',
        Value('-'),
        Count('played_at')
    )
).values('played_per_track_and_station')