0

我是 PHP 新手,但正在创建一个相当复杂的工作经验数据库。目前有两个表(雇主,学生)现在,我用过:

"SELECT * FROM employers ORDER BY Category, SubCategory, Name"

生成雇主列表及其详细信息。但是,在此列表中,我需要显示在三周内哪些学生与哪些雇主一起工作。如果'WeekOne'(也是'students'中的一列)='Name'(来自'employers'),我需要从'students'返回一个'FirstName'值

请帮忙!如果这太乱码,请告诉我-很难解释。

本质上,我想生成一个看起来有点像这样的列表:

公司一,地址,第一周 - 学生,第二周 - 学生,第三周 - 学生

公司二,地址,第一周 - 学生,第二周 - 学生,第三周 - 学生等

4

3 回答 3

0

尽管您很高兴向我们展示您的 sql 表,但这是我对您将如何做的想法。

SELECT e.*, s.FirstName FROM employers AS e, students AS s
WHERE s.WeekOne = e.Name
OR s.WeekTwo = e.Name
OR s.WeekThree = e.Name
// etc
ORDER BY Category, SubCategory, Name

如果我理解正确,这将帮助您获取所需的数据。

于 2012-04-24T10:12:44.887 回答
0

据我了解,您希望获得雇主的详细信息。您可以使用联接操作来使用此类查询;

SELECT e.*, s.FirstName FROM students AS s
RIGHT JOIN employers AS e
ON s.WeekOne=e.Name
ORDER BY Category, SubCategory, Name
于 2012-04-24T10:13:16.323 回答
0

如果学生表 weekone 列等于雇主表中的“姓名”,则下面的 SQL 将返回学生的名字和雇主的姓名。

SELECT students.FirstName, Employers.Name
FROM students
JOIN employers ON students.WeekOne = Employers.Name

我明白了,您想要:Employer, Address, Week One - Student, Week Two - Student, Week Three - Student

尝试这样的事情:

SELECT e.name, e.address, student1.firstname AS 'Week One', student2.firstname AS 'Week Two', student3.firstname AS 'Week Three'
FROM employers AS e
JOIN students AS student1 ON e.name = student1.weekone
JOIN students AS student2 ON e.name = student2.weektwo
JOIN students AS student3 ON e.name = student3.weekthree
ORDER BY category, subcategory, e.name
于 2012-04-24T10:13:19.917 回答