扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这个表我觉得还缺个字段啊,还要加个摄影作品id的外键吧
创新互联建站专业为企业提供铁力网站建设、铁力做网站、铁力网站设计、铁力网站制作等企业网站建设、网页设计与制作、铁力企业网站模板建站服务,十年铁力做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
不然你这个表根本就不能记录哪个科的哪个人给哪个作品投了票啊
还有竟然名字有重名,那你就不要存名字,存用户的主键啊
这样就可以避免这个问题
表结构这样就可以了
id pid userid time (pid为摄影作品的id)
投票的时候就判断下
$pid为作品id,前台传过来,用户id存在session中
SELECT COUNT(*) FROM table WHERE userid='".$_SESSION['userid']."' AND pid='".$pid."'
如果大于0则证明该用户已经给这个作品投票了,因为用户id不可能重复,所以即使用户重名也不影响了
复审表通过一次自连接筛选出最大值后再做关联
SELECT
花名册.工号,
花名册.姓名,
取证情况.证书信息,
复审情况F.复审时间
FROM
花名册
LEFT JOIN 取证情况 ON 花名册.工号 = 取证情况.工号
LEFT JOIN (
SELECT 复审情况.* FROM 复审情况
INNER JOIN
(SELECT MAX(复审时间) 复审时间,工号 FROM 复审情况 GROUP BY 工号) 复审情况2
ON 复审情况.复审时间=复审情况2.复审时间 AND 复审情况.工号=复审情况2.工号
) 复审情况F ON 花名册.工号 = 复审情况F.工号;
最后给你定下的删除语法为:
delete a from 表 a,表 b where a.姓名=b.姓名2 ;
楼上的我觉得你对事务应该了解的不够吧,在一个事务里边删除记录并不是一行一行提交的,而是一起提交的,所以用这种方式完全可以删除,我已经测试通过了!
下面是测试代码:
/*
MySQL Data Transfer
Source Host: localhost
Source Database: wxg
Target Host: localhost
Target Database: wxg
Date: 2010-06-04 12:23:36
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for 表
-- ----------------------------
CREATE TABLE `表` (
`姓名` varchar(20) default NULL,
`姓名2` varchar(20) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `表` VALUES ('张小三', '李四');
INSERT INTO `表` VALUES ('黄大山', '张小三');
INSERT INTO `表` VALUES ('李小明', '黄五五');
INSERT INTO `表` VALUES ('周小东', '张小强');
INSERT INTO `表` VALUES ('黄五五', '李东东');
delete a from 表 a,表 b where a.姓名=b.姓名2 ;
这样会删除两行
这恐怕在程序端就需要控制吧,录入,提交时就要判断吧,而在MySQL数据库端的字符类型的字段中是没法判断的。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流