使用下面的表格代碼,我被要求畫出一個按每個項目的排序排序的列表。每列排名#是每個用戶如何排列該項目的方式。所以對於一個項目A,如果它是由一個用戶排名1,而另一個用戶排名爲16,那麼它的整體排名應該是8.是否有可能的SQL查詢或者在PHP中處理它?通過按列排列選擇排序列表
CREATE TABLE `rankings` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`userId` int(11) NOT NULL,
`rank1` int(11) NOT NULL,
`rank2` int(11) NOT NULL,
`rank3` int(11) NOT NULL,
`rank4` int(11) NOT NULL,
`rank5` int(11) NOT NULL,
`rank6` int(11) NOT NULL,
`rank7` int(11) NOT NULL,
`rank8` int(11) NOT NULL,
`rank9` int(11) NOT NULL,
`rank10` int(11) NOT NULL,
`rank11` int(11) NOT NULL,
`rank12` int(11) NOT NULL,
`rank13` int(11) NOT NULL,
`rank14` int(11) NOT NULL,
`rank15` int(11) NOT NULL,
`rank16` int(11) NOT NULL,
`submissionTimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
這裏是每一個排名列參考下表:
CREATE TABLE `rankableItems` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`itemName` varchar(30) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;
不幸的是表是從已經完成的Excel中創建文件 - 從頭開始我想這樣做,但我有點困擾已經以這種格式的大量答案。 – LVDuke
你可以將你的數據遷移到這張新表:) – Alfwed