當使用hasAndBelongsToMany表關係時,如何按用戶流行度排序?即:SQL按受歡迎程度排序?
我有一個表叫做playgroups,players和playgroup_players。
如何根據遊戲組中的玩家人數對玩具組進行排序?
幼兒遊戲組:
CREATE TABLE `playgroups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`tag` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL,
`description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`avatar_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`city` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`state` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
玩家:
CREATE TABLE `players` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(30) DEFAULT NULL,
`last_name` varchar(30) DEFAULT NULL,
`username` varchar(30) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`public_email` tinyint(1) NOT NULL DEFAULT '0',
`facebook_id` varchar(250) DEFAULT NULL,
`card_tooltip` tinyint(1) NOT NULL DEFAULT '1',
`profile_pic_url` varchar(255) NOT NULL,
`public_name` tinyint(1) NOT NULL DEFAULT '0',
`city` varchar(40) NOT NULL,
`state` varchar(2) NOT NULL,
`date_joined` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=107 DEFAULT CHARSET=latin1;
而且PlaygroupPlayers:
CREATE TABLE `playgroup_players` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`player_id` int(11) NOT NULL,
`playgroup_id` int(11) NOT NULL,
`admin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
有關表格的小波動信息可能有所幫助。但是你可以看看Group By Clause。 選擇玩家羣,算上球員 從where子句 組由playerGroup 的結果應該有球員組和相應數量將代表該組中的玩家數量 – Zohaib
好吧,我會後的表結構 – LordZardeck