我有三个表,我想要显示数据。这是一个表的示例
CREATE TABLE IF NOT EXISTS `sales` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`dateadded` datetime NOT NULL,
`dateupdated` datetime NOT NULL,
`created_by` int(44) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=924 ;)
这里created_by是用户table的外键。我想得到这样的结果
User TableName ActionType Date
XYZ sales Inserted 2013-04-23 00:00:00
XYZ sales updated 2013-05-23 00:00:00
如果dateupdated晚于dateadded show更新,则显示已插入。 因为这是来自销售表,所以tableName是sales 同样对于所有三个表,如何做到这一点?
用户表看起来像这样
Id User_Name
1 XYZ
销售表有此数据
1 2013-04-23 00:00:00 2013-04-23 00:00:00 1
2 2013-04-23 00:00:00 2013-05-23 00:00:00 1
答案 0 :(得分:0)
答案 1 :(得分:0)
试试这个:
SELECT u.user, 'sales',
case
when s.dateadded = s.dateupdated
then 'Inserted'
else 'Updated'
end,
case
when s.dateadded = s.dateupdated
then s.dateadded
else s.dateupdated
end
FROM users u
JOIN sales s
ON u.id = s.created_by
我写的查询会解决您的请求,但我建议您再次考虑您的模型。
我认为您的销售表作为每个动作的行,每个动作都有一个典型(插入,更新等),每行的日期都是唯一的。
答案 2 :(得分:0)
SELECT user_name, 'sales',
IF(dateadded>=dateupdated,'Inserted','Updated'),
GREATEST(dateadded,dateupdated)
FROM users,sales
WHERE users.id = created_by