我是PHP的新手,但我正在创建一个相当复杂的工作体验数据库。目前有两个表(雇主,学生)现在,我用过:
"SELECT * FROM employers ORDER BY Category, SubCategory, Name"
生成雇主名单及其详细信息。但是,在此列表中,我需要在三周内显示哪些学生与哪些雇主在一起。如果'WeekOne'(也是'学生'中的一列)='姓名'(来自'雇主'),我需要从'学生'返回'FirstName'值
请帮忙!如果这太乱了,请告诉我 - 这很难解释。
基本上,我想生成一个看起来有点像这样的列表:
公司一,地址,第一周 - 学生,第二周 - 学生,第三周 - 学生
公司二,地址,第一周 - 学生,第二周 - 学生,第三周 - 学生 等
答案 0 :(得分:0)
虽然向您展示您的sql-tables会很高兴,但我想知道您将如何做到这一点。
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
如果我理解正确,这将有助于您获取所需的数据。
答案 1 :(得分:0)
据我了解,您希望雇主了解他们的详细信息。您可以通过使用联接操作来使用此类查询;
SELECT e.*, s.FirstName FROM students AS s
RIGHT JOIN employers AS e
ON s.WeekOne=e.Name
ORDER BY Category, SubCategory, Name
答案 2 :(得分:0)
如果学生表weekone列等于雇主表中的“姓名”,则下面的SQL将返回学生的名字和雇主的姓名。
SELECT students.FirstName, Employers.Name
FROM students
JOIN employers ON students.WeekOne = Employers.Name
我知道,你想要:雇主,地址,第一周 - 学生,第二周 - 学生,第三周 - 学生。
尝试这样的事情:
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