2012-04-24 163 views
0

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

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

产生雇主和他们的详细的列表。但是,在这份名单中,我需要显示哪些学生在三周内与哪些雇主合作。如果'WeekOne'(也是'学生'中的一列)='姓名'(来自“雇主”),我需要从'学生'返回'FirstName'值。

请帮忙!如果这太乱了,让我知道 - 这很难解释。

从本质上讲,我想生成,看起来名单有点像这样:

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

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

+0

你可以张贴在每个表中可用的列?我建议的做法是从“学生”表中选择并加入雇主表中所需的数据。 – Steven 2012-04-24 10:11:19

+0

@Steven已经做完了:) – 2012-04-24 10:17:36

+0

@Steven我想知道的是每个雇主都有它的细节和哪个学生在那里。就像这样: 雇主, 地址, 第一周 - 学生, 第二周 - 学生,三 周 - 学生 – 2012-04-24 10:21:22

回答

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 

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

+0

排序... ...我需要去的产生,让我下面的雇主的完整列表每个雇主的信息:(雇主名称)(地址)(第1周=学生)(第2周=学生)(第3周=学生) – 2012-04-24 10:31:51

+0

然后你只需在'OR s.WeekTwo = e.Name' ,在ORDER BY之前。我编辑了我的答案以表明如何完成。 – 2012-04-24 18:32:06

0

据我所知,你想得到他们的details.Usou雇主可以使用这种查询通过使用连接操作;

SELECT e.*, s.FirstName FROM students AS s 
RIGHT JOIN employers AS e 
ON s.WeekOne=e.Name 
ORDER BY Category, SubCategory, Name 
+0

排序...我需要的是生成一个雇主的完整列表,它给了我每个雇主的以下信息:(雇主姓名)(地址)(第1周=学生)(第2周=学生)(周3 =学生) – 2012-04-24 10:31:25

+0

你能否也请提供db结构? – 2012-04-24 10:36:09

+0

对于两个表?我怎么做?抱歉。谢谢。 – 2012-04-24 10:38:47

0

如果students表的weekone列等于雇主表中的'Name',那么下面的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 
+0

编辑 - 这有帮助吗? – 2012-04-24 10:39:56

+0

谢谢你的帮助特里 - 你是什么意思的'学生1'等? '学生'表是一个包含大量个人信息的学生的数据库,其中包括专栏'第一周''第二周''第三周',这些专栏显示了他们在相应周内所处的公司。 – 2012-04-24 10:44:45

+0

我已经添加到我原来的帖子中,试图更清楚地说明...... – 2012-04-24 10:47:33