【问题标题】:Selecting results from 2 tables based on the variables in 3th table根据第 3 个表中的变量从 2 个表中选择结果
【发布时间】:2013-10-02 20:22:50
【问题描述】:

我的数据库中有 2 个标签:

users - userID(primary key), username, password
courses - id(primary key), name, text
subscriptions - id(primary key), curso_id, user_id 

就在订阅表中,我在里面写了用户 UserID -> user_id 和他订阅的课程的 ID curso_id 所以订阅数据库中的结果就像

subscribtions table: 
id  user_id   curso_id
1      12         1
2      5          1
3      12         2 
4      6          7 

这是用户表:

users table
userID   username password
   1        user1  passw1
   2
   3
   4

这是课程表:

course table:
   id   course_name  descriotion
    1   course one   text
    2
    3

我的问题是如何创建一个 sql 查询,它首先通过 $row['id'] 选择课程,这表示课程数据库中的 id 变量,然后基于第三个表订阅列出所有订阅此的用户课程号。 ?

第二个问题是如何列出所选课程的订阅用户数

$row['id'] 

这是我现在拥有的某种算法逻辑

SELECT * FROM users WHERE id=5.courses(select from the database 'courses') AND 5-> SELECT ALL FROM table subscriptions user_id equal to id from table users

【问题讨论】:

  • 你能告诉我们你尝试了什么吗?
  • 问题是我不太确定如何建立不同标签之间的关系,然后设置 e 规则或选择我猜选项是加入表格,然后如何设置选择规则
  • 这是非常基本的东西。我建议查看 SQL 教程。 w3schools.com/sql/sql_join.asp

标签: mysql


【解决方案1】:

不确定我是否理解您试图实现的目标,但如果您想要一个列表,显示每门课程中的每个用户以及课程名称并按课程名称排序,这应该可以达成交易。

select t1.*, t2.*, t3.* from users as t1, courses as t2, subscriptions as t3 where t3.user_id = t1.userID and t3.curso_id = t2.id order by t2.id

这不是最好的方法,从性能方面来看,我建议将它放在几个语句中,因为连接通常很慢。

【讨论】:

  • 我想列出所有订阅所选课程的用户,但一次只列出一门课程。所选课程由 $row['id'] 标识
【解决方案2】:

好的,我找到了方法,这里是 mysql 查询:

    FROM users
INNER JOIN subscriptions
ON users.userID = subscriptions.user_id
WHERE subscriptions.curso_id = $ids"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2017-03-29
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多