-2
该表具有以下结构:从多个表MySql中获取数据?
CREATE TABLE IF NOT EXISTS `payments` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`direction` enum('payin','payout') NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`amount` decimal(10,2) NOT NULL,
`time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `dir` (`direction`),
KEY `user_id` (`user_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(64) NOT NULL,
`password` varchar(64) NOT NULL,
`created` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`logins` int(10) unsigned NOT NULL DEFAULT '0',
`last_login` int(10) unsigned DEFAULT NULL,
`lock` tinyint(1) unsigned NOT NULL DEFAULT '0',
`refer` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_username` (`username`),
KEY `lock` (`lock`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
CREATE TABLE IF NOT EXISTS `userprofiles` (
`user_id` int(10) unsigned NOT NULL,
`email` varchar(255) DEFAULT NULL,
`firstname` varchar(255) DEFAULT NULL,
`lastname` varchar(255) DEFAULT NULL,
`nick` varchar(255) DEFAULT NULL,
`birthday` timestamp NULL DEFAULT NULL,
`gender` enum('male','female') DEFAULT NULL,
`country` varchar(3) DEFAULT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `email` (`email`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
我想查询的输出与以下结构:
users.id,
users.username,
userprofiles.email,
[SUM OF AMOUNT WITH DIRECTION payin],
[SUM OF AMOUNT WITH DIRECTION payout],
[COUNT OF PAYMENTS WITH DIRECTION payin],
[MAX TIME OF PAYMENT WITH DIRECTION payin]
我不知道如何编写正确的查询这方面的任何变种例。
任何想法,将不胜感激。谢谢。
您可能还需要按用户名和电子邮件进行分组。 –
MySQL通常不需要这样做。 – Barmar
@Barmar,你可以给我一个关于“MySQL通常不需要这个”的好文章的链接,我想深入了解这个问题。谢谢。 –