Mysql的存储过程:查找一张表的数据再根据查出来的数据去另外一张表中取另外的数据

Newhvi 2014-10-30 03:43:22
表结构如下

/*Table structure for table `tbl_mail` */

DROP TABLE IF EXISTS `tbl_mail`;

CREATE TABLE `tbl_mail` (
`MailID` INT(64) NOT NULL COMMENT '邮件ID',
`UserID` INT(64) NOT NULL COMMENT '用户ID',
`ActorID` INT(32) NOT NULL COMMENT '角色ID',
`MailItemID` INT(32) COMMENT '邮件模板ID',
`MailType` TINYINT(1) NOT NULL COMMENT '邮件类型',
`MailTitle` VARCHAR(64) NOT NULL COMMENT '邮件标题',
`MailBody` VARCHAR(512) NOT NULL COMMENT '邮件内容',
`SendActorID` INT(32) COMMENT '发送玩家ID',
`SendActorName` VARCHAR(32) COMMENT '发送玩家名字',
`SendTime` DATETIME NOT NULL COMMENT '创建时间',
PRIMARY KEY (`MailID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;


/*Table structure for table `tbl_mailgoods` */

DROP TABLE IF EXISTS `tbl_mailgoods`;

CREATE TABLE `tbl_mailgoods` (
`MailID` INT(64) NOT NULL COMMENT '邮件ID',
`UserID` INT(64) NOT NULL COMMENT '用户ID',
`ActorID` INT(32) NOT NULL COMMENT '角色ID',
`GoodsID` INT(32) NOT NULL COMMENT '物品ID',
`GoodsType` TINYINT(1) NOT NULL COMMENT '物品类型',
`Num` INT(32) NOT NULL COMMENT '物品数量',
PRIMARY KEY (`MailID`, `GoodsID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;


现在是想从根据外包传进来的UserID和ActorID查找tbl_mail表中的数据,再根据查找出来的数据去tbl_mailgoods中的数据。
从tbl_mail表中能查到多条数据,然后每条数据又有可能在tbl_mailgoods中有多条,怎么写存储过程。
希望输出的集合为:
MailID,MailItemID,MailType,MailTitle,MailBody,SendActorID,SendActorName,SendTime(GoodsID,GoodsType,Num……)
...全文
1688 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
九月茅桃 2014-10-30
  • 打赏
  • 举报
回复
引用 6 楼 newhvi 的回复:
[quote=引用 5 楼 mchdba 的回复:] SELECT t2.*,t1.* FROM tbl_mail t2 , tbl_mailgoods t1 WHERE t2.`UserID`= 123 AND t2.`ActorID` AND t1.`UserID`=t2.`UserID` AND t1.`ActorID`=t2.`ActorID` AND t1.`MailID`=t2.`MailID`; 内连接中,多对多都会自动查询出来的,比如2VS3,那么查询出来就是6条记录。
OK,3Q,是我想要的[/quote] 不客气,能帮到你就好。
Newhvi 2014-10-30
  • 打赏
  • 举报
回复
引用 5 楼 mchdba 的回复:
SELECT t2.*,t1.* FROM tbl_mail t2 , tbl_mailgoods t1 WHERE t2.`UserID`= 123 AND t2.`ActorID` AND t1.`UserID`=t2.`UserID` AND t1.`ActorID`=t2.`ActorID` AND t1.`MailID`=t2.`MailID`; 内连接中,多对多都会自动查询出来的,比如2VS3,那么查询出来就是6条记录。
OK,3Q,是我想要的
九月茅桃 2014-10-30
  • 打赏
  • 举报
回复
SELECT t2.*,t1.* FROM tbl_mail t2 , tbl_mailgoods t1 WHERE t2.`UserID`= 123 AND t2.`ActorID` AND t1.`UserID`=t2.`UserID` AND t1.`ActorID`=t2.`ActorID` AND t1.`MailID`=t2.`MailID`; 内连接中,多对多都会自动查询出来的,比如2VS3,那么查询出来就是6条记录。
九月茅桃 2014-10-30
  • 打赏
  • 举报
回复
“再根据查找出来的数据去tbl_mailgoods中的数据” 这个逻辑是什么,根据什么条件什么字段匹配去查询?
benluobo 2014-10-30
  • 打赏
  • 举报
回复
就是表的联合查询吧 不需要存储过程吧
Newhvi 2014-10-30
  • 打赏
  • 举报
回复
引用 1 楼 jielovehuan 的回复:
先搞清楚这两张表的关联关系是什么
tbl_mailgoods是tbl_mail的子表啊,我们数据库基本没用外键这个东东,加上的话可以实现么?
jielovehuan 2014-10-30
  • 打赏
  • 举报
回复
先搞清楚这两张表的关联关系是什么

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧