社交网站数据库mySql存储过程

社交网站数据库mySql存储过程,mysql,stored-procedures,view,Mysql,Stored Procedures,View,我想为以下数据库模式创建一个存储过程 一个带有id和所有其他用户详细信息的用户表,用户可以创建相册,在其中他们将添加图片并邀请朋友喜欢和评论图片我要显示最后五个相册和喜欢的数量、相册照片上的评论以及共享该相册的朋友数量 CREATE TABLE `albums` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) unsigned NOT NULL, `title` varchar(255) DE

我想为以下数据库模式创建一个存储过程

一个带有id和所有其他用户详细信息的用户表,用户可以创建相册,在其中他们将添加图片并邀请朋友喜欢和评论图片我要显示最后五个相册和喜欢的数量、相册照片上的评论以及共享该相册的朋友数量

CREATE TABLE `albums` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `title` varchar(255) DEFAULT NULL,
  `created` date NOT NULL DEFAULT '0000-00-00',
  PRIMARY KEY (`id`),
  KEY `UserAlbum` (`user_id`)
) 

CREATE TABLE `shared_albums` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `album_id` bigint(20) unsigned NOT NULL,
  `shared_user_id` int(11) unsigned NOT NULL,
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  KEY `UserSharedAlbum` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

CREATE TABLE `pictures` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  `album_id` bigint(20) unsigned NOT NULL,
  `caption` text,
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `UserPicture` (`user_id`),
  KEY `PicturesAlbum` (`album_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
然后有表格保存图片评论和图片喜欢。我想创建一个mySql存储过程,从所有这些表中获取组合信息

最后,我想将json数据输出为

{
  "meta": [
        {
          "total_albums" : 25,
        }
      ]

  "albums": [
      {
        "id" : 205488
          "title": "album title",
          "cover_image": "http://images.example.com/4133bc0c08b211e38b1d22000ae91391_7.jpg",
          "images":[
              {
                "http://images.example.com/4133bc0c08b2134wtr58b1d22000ae91391_6.jpg"
                "http://images.example.com/143rtbc0c08b2134wtr58b1d22000ae91391_7.jpg"
                "http://images.example.com/5633bc0c08b2134wtr58b1d22000778g91_6.jpg"
                "http://images.example.com/5633bc0c08b2134wtr58b1d22000778g91_6.jpg"
              }
             ],
          "friends": 27,
          "images": 154,
          "comments": 75,
          "likes" : 19,
          "last_update" => "just now"
      },
。。。最近五张专辑

我试过的

CREATE PROCEDURE get_user_albums(user_id INT)
BEGIN
DECLARE album_count INT;
DECLARE friends_count INT;
DECLARE images_count INT;
DECLARE comments_count INT;
DECLARE likes_count INT;

SELECT COUNT(`id`.`albums`) as album_count FROM `albums` WHERE `albums`.`user_id` = user_id;


END;

我想知道每个相册的赞数、评论数等。对于每个相册,我如何在存储过程中使用数组。

唯一的问题是-为什么需要一个过程?我想避免多个sql查询和JoinerR。。。多个sql查询和联接有什么问题?您确定存储过程会对您有所帮助吗?您可以使用
视图
和/或
临时表
来避免多个
联接
我不确定是否要使用存储过程。有人能给我指出正确的方向吗?我应该做些什么来获得输出并保持优化。