我有下面的三个表,我希望从中获得以下选择:
1.)从给定用户中选择所有项目collaboration并将它们分组
这意味着当用户登录时,(s)他将看到所有(并且仅)属于他是组成员的组的项目。
2.) 对于每个,选择所有协作项目。
这意味着当用户从上面的 1 中选择任何组 ( ) 时,他将看到属于所选组 ( )的所有项目group_idgroup_memberscollaborationgroup_idgroup_idcollaborationgroup_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;
感谢您的输入!