我有一个表格R,其中包含以下字段:
R
weatherID, dateRecorded, Days, locationID, timeRecorded, rainAmount, rainNumberHours, temperature, windSpeed, windDirection
注意:该Days字段是一个整数类型,描述了自增+1的天数。该weatherID字段是此处未显示的两个不同表中的其他两个字段的串联。
Days
weatherID
该表的模式已简化,但与我要调查的内容相关。我们想找出是否存在一些遵循其他天气模式的天气模式,并找到满足特定参数和条件的记录。
我在查询中使用别名来获取不同字段值的记录Days。
模型查询会清楚地表明:我R在别名样式查询中多次加入表,因此我有别名R1和别名R2,看起来就像将三个表连接在一起。
R1
R2
$sql = " SELECT R.weatherID, R.Days, R.locationID, R.timeRecorded, R.windDirection, R1.weatherID, R1.Days, R1.locationID, R1.timeRecorded, R1.windDirection, R2.weatherID, R2.Days, R2.locationID, R2.timeRecorded, R2.windDirection FROM ((R INNER JOIN R1 ON R.Days= R1.Days) INNER JOIN R2 ON R.locationID= R2.locationID) WHERE ((R.Days)=[R1].[Days]-2) AND ((R1.Days)=[R2].[Days]-2); "
该模型为我提供了类似的天气模式,这些模式在两 (2) 天内再次发生或重复(指 WHERE 子句中的“2”)。
现在的问题是我们如何
我想通过以下方式以类似网格的方式排列查询结果:
R.weatherID R.Days R.locationID R.windDirection R1.weatherID R1.Days R1.locationID R1.windDirection R2.weatherID R2.Days R2.locationID R2.windDirection
并且下一条记录也是同样的类似网格的格式。
我在数据库中只有表 R:即我有 weatherdb.R,但我没有“weatherdb.R1”和“weatherdb.R2”,换句话说,我没有表 R1 和 R2,但正在使用他们在别名中,这是行不通的。
但是,MySQL 说:文档 #1146 - 表 ‘weatherdb.R1’ 不存在
sqlWeather1.php 文件是我下面的第一个试用示例:
<?php require "database/connection.php"; $sql="SELECT R.weatherID, R.Days, R.locationID, R.timeRecorded, R.windDirection, R1.weatherID, R1.Days, R1.locationID, R1.timeRecorded, R1.windDirection, R2.weatherID, R2.Days, R2.locationID, R2.timeRecorded, R2.windDirection FROM ((R INNER JOIN R1 ON R.Days = R1.Days) INNER JOIN R2 ON R.locationID = R2.locationID) WHERE ((R.Days)=R1.Days-2) AND ((R1.Days)=R2.Days-2) ORDER BY R.Days DESC;"; $result=mysqli_query($db, $sql) or die("Bad query:$sql"); //$result = R2($query); echo("<table border = 1>"); $first_row = true; while ($row = mysqli_fetch_assoc($result)) { if ($first_row) { $first_row = false; // Output header row from keys. echo '<tr>'; foreach($row as $key => $field) { echo '<th>' . htmlspecialchars($key) . '</th>'; } echo '</tr>'; } echo '<tr>'; foreach($row as $key => $field) { echo '<td>' . htmlspecialchars($field) . '</td>'; } echo '</tr>'; } echo("</table>"); ?>
我在给定的查询中看到了两个问题。
我在别名样式查询中多次加入表 R,因此我有别名 R1 和别名 R2,使它看起来像是将三个表连接在一起
您忘记在 R 表上分配别名 R1 、 R2 名称
改变 ,
INNER JOIN R1 ON R.Days= R1.Days INNER JOIN R2 ON R.locationID= R2.locationID
至
INNER JOIN R as R1 ON R.Days= R1.Days INNER JOIN R as R2 ON R.locationID= R2.locationID
MySQL 中不允许使用方括号。我不确定,但[]对于 T-SQL 来说非常独特,因此请删除它们和不相关的括号。
[]
您的最终查询将如下所示:
SELECT R.weatherID, R.Days, R.locationID, R.timeRecorded, R.windDirection, R1.weatherID, R1.Days, R1.locationID, R1.timeRecorded, R1.windDirection, R2.weatherID, R2.Days, R2.locationID, R2.timeRecorded, R2.windDirection FROM R INNER JOIN R as R1 ON R.Days= R1.Days INNER JOIN R as R2 ON R.locationID= R2.locationID WHERE R.Days=R1.Days-2 AND R1.Days=R2.Days-2;