我正在为在线辅导网站设计MYSQL数据库。
比如说,我有:
现在,我想在class表上运行SQL查询,以查找所有在特定教员中注册的学生&在我拥有的特定科目下:
$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设计方面的专家。请帮帮忙。
发布于 2011-08-11 07:46:20
这不是模式中发生的事情,而是在查询数据库时所做的事情。
若要从相关表中获取信息,请加入该表。
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参数化查询的好时机。
发布于 2011-08-11 07:46:19
$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");您还需要从表学生中选择值。
https://stackoverflow.com/questions/7022461
复制相似问题