【问题标题】:Show a group project to multiple users mysql向多个用户mysql显示一个组项目
【发布时间】:2016-06-17 16:40:03
【问题描述】:

我有两个表 group_table 存储所有组信息。

我有一个 group_person_table,其中所有 id 都与组相关

如果group_person_table中匹配,我只想向多个用户显示组信息

数据库如下所示:

Group_table person_id、group_id、groupname、groupdesc。

Group_person_table person_group_id、group_id、person_id

目前我只有以下查询:

"SELECT * FROM group_table WHERE person_id = $person_id" IN (SELECT person_id FROM group_person_table WHERE person_id =$person_id);

我目前能够向所有用户显示所有组,但我只想向用户显示组,如果它们在 group_person_table 中相同,因此用户 A 和 B 在组 A 中,所以他们都可以看到A组,如果用户A在B组,那么用户B就看不到B组了!

我正在调用 OOP 中的数据

公共函数 get_project($person_id){ //$sql3="SELECT * FROM group_table WHERE person_id = $person_id "; $sql3="SELECT * FROM group_table WHERE person_id = $person_id"; $results = mysqli_query($this->db, $sql3);

【问题讨论】:

  • 请编辑您的问题并提供示例数据和所需结果。
  • 但是您的查询是荒谬的?!?! :-(
  • @Strawberry 我知道我尝试了内部联接和 IN 语句,但两者似乎都不起作用我似乎无法修复它
  • 好了,现在你知道下一步该做什么了。

标签: php sql mysqli


【解决方案1】:

在表之间创建关系时,一件非常重要的事情是决定将用于链接它们的外键保存在哪里。对组表中的人员表有一个外键,会将组限制为一个人,这显然是您不想要的。因此,您可以从group_table 中删除该列,并仅将group_person_table 用于用户和组之间的关系。

调整后,最好的选择是内连接,因为在处理较大的数据集时,嵌套的 select 语句确实会减慢速度。而且你想习惯使用更好的方法:)。

您的查询将是:

"SELECT * FROM group_table 
 JOIN group_person_table ON group_table.group_id = group_person_table.group_id 
 WHERE group_person_table.person_id = {$person_id}"

【讨论】:

    猜你喜欢
    • 2015-01-12
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2013-03-09
    • 2020-10-06
    相关资源
    最近更新 更多