我想從數據庫中獲得最多觀看的照片,但我不知道如何完成此操作。這是我的SQL的時刻:獲取數據庫中查看次數最多的數據
SELECT * FROM photos AS p, viewers AS v
WHERE p.id = v.id_photo
GROUP BY v.id_photo
的數據庫:
CREATE TABLE IF NOT EXISTS `photos` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`photo_filename` varchar(50) NOT NULL,
`photo_camera` varchar(150) NOT NULL,
`photo_taken` datetime NOT NULL,
`photo_resolution` varchar(10) NOT NULL,
`photo_exposure` varchar(10) NOT NULL,
`photo_iso` varchar(3) NOT NULL,
`photo_fnumber` varchar(10) NOT NULL,
`photo_focallength` varchar(10) NOT NULL,
`post_coordinates` text NOT NULL,
`post_description` text NOT NULL,
`post_uploaded` datetime NOT NULL,
`post_edited` datetime NOT NULL,
`checkbox_approxcoor` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
CREATE TABLE IF NOT EXISTS `viewers` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`id_photo` int(10) DEFAULT '0',
`ipaddress` text NOT NULL,
`date_viewed` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)
在viewers
的數據是這樣的:
(1, 85, '3892a0ab97d6ff325f285b27b847070f', '2012-06-21 22:49:25'),
(2, 84, '3892a0ab97d6ff325f285b27b847070f', '2012-06-21 22:49:25'),
(3, 85, '3892a0ab97d6ff325f285b27b847070f', '2012-06-21 22:49:25');
一個單列從數據庫中photos
瞭解如何行看起來像在這個數據庫中:
(85, 'P1170986.JPG', 'Panasonic DMC-LX3', '2012-06-19 18:00:40', '3968x2232', '10/8000', '80', '50/10', '51/10', '', '', '2012-06-19 18:45:17', '0000-00-00 00:00:00', '0')
此刻的SQL只打印ID爲84.在這種情況下,照片的時候是錯的 - 它應該打印出來的照片與編號85
我怎樣才能解決這個問題?
在此先感謝。
這是一個SQL反模式來使用隱式連接。顯式連接更容易維護,並且由於意外交叉連接等原因而不易出錯。 20年前取代了含蓄聯結。你爲什麼還在使用它們? – HLGEM
20年前?!哦,你在開玩笑吧?我不知道 – Erik