Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多查询数据库_Php_Mysql_Database - Fatal编程技术网

Php 多查询数据库

Php 多查询数据库,php,mysql,database,Php,Mysql,Database,我是PHP新手,但正在创建一个相当复杂的工作经验数据库。目前有两张表,雇主,学生,我用过: "SELECT * FROM employers ORDER BY Category, SubCategory, Name" 生成雇主及其详细信息的列表。然而,在此列表中,我需要显示在三周的课程中,哪些学生与哪些雇主在一起。如果“WeekOne”也是“employers”中“students”=“Name”中的一列,我需要从“students”返回“FirstName”值 请帮忙!如

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

"SELECT * FROM employers ORDER BY Category, SubCategory, Name"
生成雇主及其详细信息的列表。然而,在此列表中,我需要显示在三周的课程中,哪些学生与哪些雇主在一起。如果“WeekOne”也是“employers”中“students”=“Name”中的一列,我需要从“students”返回“FirstName”值

请帮忙!如果这是太混乱让我知道-这是很难解释

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

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
第一公司,地址,第一周-学生,第二周-学生,第三周-学生

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


尽管您能向我们展示您的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

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

据我所知,您希望获得雇主的详细信息。您可以使用join操作使用此类查询

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

如果学生表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

您可以发布每个表中可用的列吗?我建议做的是从学生表中进行选择,并加入雇主表中所需的数据。@Steven我想得到的是每个雇主的详细信息以及哪个学生在那里。比如:雇主,地址,第一周的学生,第二周的学生,第三周的学生之类的。。。我需要得到的是生成一份完整的雇主列表,为每个雇主提供以下信息:雇主名称地址第1周=学生第2周=学生第3周=学生你能同时为两个表提供db结构吗?我该怎么做?很抱歉谢谢。如果你使用的是某种工具,它可以是图像输出。。。我需要得到的是生成一个完整的雇主列表,为每个雇主提供以下信息:雇主名称地址第1周=学生第2周=学生第3周=学生然后你只需在where后面添加或s.WeekTwo=e.Name等,在ORDER BY之前。我已经编辑了我的答案,以展示如何做到这一点。谢谢你的帮助特里-你所说的“学生1”等是什么意思?“students”表是一个包含大量个人信息的学生数据库,包括“weekone”列、“weekone”列、“weekone”列、“weekone”列和“weekone”列,这些列表示他们在各自的周内所在的公司。是的,student1将是weekone字段等于雇主名称的学生的别名。学生2也一样,但他/她的两周字段等于雇主名称。我希望这些句子有点道理,这已经超出了我的想象:“e”是雇主的缩写形式吗?我需要修改吗?是的,你也可以这样做。因此,如果雇主将“e”作为e或“e”,则“e”将成为雇主的别名:。它为我返回了一个空白页:s