Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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/0/mercurial/2.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
MySQL:从显示整个数据库的多个表中收集特定数据_Mysql_Sql - Fatal编程技术网

MySQL:从显示整个数据库的多个表中收集特定数据

MySQL:从显示整个数据库的多个表中收集特定数据,mysql,sql,Mysql,Sql,我正在尝试为我的数据管理课程的最后一个项目创建一个数据库 我有四个表格:客户、公园、旅行和评论 “customers”表只有两个重要字段:customernumber(自动递增,主键)和name “parks”表只有两个重要字段:parknum(自动递增,主键)和name “trips”表有三个字段,所有字段都很重要:customer(作为外键索引,引用“customers”表中的customernumber字段)、park(作为外键索引,引用“parks”表中的parknum字段)和date

我正在尝试为我的数据管理课程的最后一个项目创建一个数据库

我有四个表格:客户、公园、旅行和评论

“customers”表只有两个重要字段:customernumber(自动递增,主键)和name

“parks”表只有两个重要字段:parknum(自动递增,主键)和name

“trips”表有三个字段,所有字段都很重要:customer(作为外键索引,引用“customers”表中的customernumber字段)、park(作为外键索引,引用“parks”表中的parknum字段)和date

“comments”表有三个字段,它们都很重要:park(索引为外键,引用“parks”表中的parknum字段)、customer(索引为外键,引用“customers”表中的customernumber字段)和comments

我的目标是生成一个SQL查询,其中显示以下字段:客户(名称)、停车场(名称)、行程(日期)和注释(注释)

我尝试了许多不同的查询,它们要么以重复顺序显示所有客户、所有公园、所有行程,以及仅显示特定公园的评论……要么显示零结果


我已经在我所有的课本和网上资源之间做了所有我能做的研究,但是我似乎找不到任何对我有用的东西

我认为您在构建评论表的方式上有点问题。按照您目前的方式,客户每个停车场只能有一条评论。如果客户访问同一部分两次,他们不能留下第二条评论。相反,您可能希望注释引用行程编号

关于你的问题,还有一些事情不是100%清楚。例如,我假设您希望每次旅行一行,而不是每位客户一行,但您的问题说您希望“旅行”(复数)。此外,还不清楚注释是下颚式的还是可选的,如果没有注释,您是否希望在旅行中看到一行

假设您对comments表进行了建议的更改,并且假设comments是可选的,并且即使没有注释,您也希望看到trips,我认为这将实现以下目的:

SELECT customers.name as customer, park.name as park, trips.date as trip, comments
FROM
(customers JOIN trips ON (customers.customer = trips.customer) JOIN parks ON
(parks.parknum = trips.park)) LEFT JOIN comments on (comments.id = trips.comment_id;

哦,我的天哪,我很抱歉我忘了提到那是一个特定的公园。我总是可以加上“WHERE comments.park=1”,对吗?此外,我确实做了你建议的更改,因为是的,你的假设是正确的。我在“接近极限0,30”的结尾处遇到语法错误,但我似乎找不到它。是的,您应该能够将其添加到WHERE子句中。如果看不到当前的查询,就很难说为什么会出现语法错误。你可以编辑你最初的问题,并将问题与错误一起发布。这有点输入错误!在我做出您建议的更改后,此解决方案有效!非常感谢。