我有下面的三个表,我希望从中获得以下选择:
1.)从给定用户中选择所有项目collaboration
并将它们分组
这意味着当用户登录时,(s)他将看到所有(并且仅)属于他是组成员的组的项目。
2.) 对于每个,选择所有协作项目。
这意味着当用户从上面的 1 中选择任何组 ( ) 时,他将看到属于所选组 ( )的所有项目group_id
group_members
collaboration
group_id
group_id
collaboration
group_id
约束:每个用户必须是组成员。该users
表是供用户使用firstname
的lastname
。
这是我尝试1无济于事!
函数 OrderByGroup_id($username) { $数据 = 数组(); $当前时间=时间(); $q = " 选择 * FROM 合作 INNER JOIN group_members ON Collaboration.group_id = group_members.group_id INNER JOIN users ON users.username = group_members.username 其中collaboration.parent_id 为NULL 并且collaboration.is_comment = 0 AND group_members.username = :user group bycollaboration.group_id"; $sq = $this->connection->prepare($q); $sq->execute(array(':user' => $username)); 而($row = $sq->fetch()) { $json = 数组(); $json['title'] = $row['title']; $json['question'] = $row['content']; $json['firstname'] = $row['firstname']; $json['姓氏'] = $row['姓氏']; $json['timestamp'] = $row['timestamp']; $json['key'] = $row['group_id']; $数据[] = $json; } $allposts =json_encode($data); 返回 $allposts= json_decode($allposts, true); }
这是表格
如果不存在“协作”,则创建表( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) 默认为 NULL, `group_id` varchar(255) 默认为空, `author` varchar(30) NOT NULL, `title` varchar(255) 默认为空, `content` 文本不为空, `is_comment` tinyint(1) 无符号非空, `file` tinyint(1) unsigned NOT NULL DEFAULT '0', `points` int(11) 默认为空, `timestamp` int(11) NOT NULL, 主键(`id`) ) 引擎=InnoDB 默认字符集=utf8;
如果不存在“用户”,则创建表( `firstname` varchar(30) NOT NULL, `lastname` varchar(30) NOT NULL, `username` varchar(30) NOT NULL, 主键(`用户名`) ) 引擎=InnoDB 默认字符集=utf8;
如果不存在 `group_members` 则创建表( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(30) NOT NULL, `group_id` varchar(50) NOT NULL, `status` tinyint(1) 无符号非空, `timestamp` int(11) NOT NULL, 主键(`id`) ) 引擎=InnoDB 默认字符集=utf8;
感谢您的输入!