首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL数据库主密钥使用

问MySQL数据库主密钥使用
EN

Stack Overflow用户
提问于 2011-08-11 07:43:02
回答 2查看 262关注 0票数 0

我正在为在线辅导网站设计MYSQL数据库。

比如说,我有:

  • 教师表(faculty_id,教师名称)
  • 主题表与(subject_id,主题名称)
  • 学生表(student_id,学生名)
  • 类表(class_id,faculty_id,student_id,subject_id)

现在,我想在class表上运行SQL查询,以查找所有在特定教员中注册的学生&在我拥有的特定科目下:

代码语言:javascript
复制
$sql=("SELECT * 
       FROM class 
       WHERE (faculty_id = '" . mysql_real_escape_string($_POST['faculty_id']) . "') 
       and (subject_id = '" . mysql_real_escape_string($_POST['subject_id']) . "')");

但是,我似乎不知道如何检索学生姓名、教员名称和主题名称,而不是仅仅检索存储在faculty_id表中的student_id & subject_id。

是否需要创建某种类型的模式和外键关系,将ID号自动链接到相应表中的相应行,以便根据这些ID号运行UPDATE、DELETE和INSERT查询?

我是不是漏掉了什么重要的东西?我不是DB设计方面的专家。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-11 07:46:20

这不是模式中发生的事情,而是在查询数据库时所做的事情。

若要从相关表中获取信息,请加入该表。

代码语言:javascript
复制
SELECT
  class.class_id,
  student.name AS `student_name`,
  faculty.name AS `faculty_name`,
  subject.name AS `subject_name`
FROM
  class
INNER JOIN
  student
ON
  student.student_id = class.student_id
INNER JOIN
  faculty
ON
  faculty.faculty_id = class.faculty_id
INNER JOIN
  subject
ON
  subject.subject_id = class.subject_id
WHERE
  class.faculty_id = ?
AND
  class.subject_id = ?

您必须将任何列名替换为实际的列名(示例中有空格,所以我肯定它们不是实名),并将PHP代码与post值放在一起?是..。阅读PDO参数化查询的好时机。

票数 3
EN

Stack Overflow用户

发布于 2011-08-11 07:46:19

代码语言:javascript
复制
$sql=("SELECT * FROM class c, student s WHERE (c.faculty_id = '" . mysql_real_escape_string($_POST['faculty_id']) . "') and (c.subject_id = '" . mysql_real_escape_string($_POST['subject_id']) . "') and s.student_id = c.student_id");

您还需要从表学生中选择值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7022461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档