我有一个表格R
,其中包含以下字段:
weatherID,
dateRecorded,
Days,
locationID,
timeRecorded,
rainAmount,
rainNumberHours,
temperature,
windSpeed,
windDirection
注意:该Days
字段是一个整数类型,描述了自增+1的天数。该weatherID
字段是此处未显示的两个不同表中的其他两个字段的串联。
该表的模式已简化,但与我要调查的内容相关。我们想找出是否存在一些遵循其他天气模式的天气模式,并找到满足特定参数和条件的记录。
我在查询中使用别名来获取不同字段值的记录Days
。
模型查询会清楚地表明:我R
在别名样式查询中多次加入表,因此我有别名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 名称
改变 ,
至
MySQL 中不允许使用方括号。我不确定,但
[]
对于 T-SQL 来说非常独特,因此请删除它们和不相关的括号。您的最终查询将如下所示:
这些相互矛盾,所以你应该得到一个空的结果集:
去掉
FROM
and中的括号JOINs
。它们似乎无关紧要,可能会导致您遇到的错误。方括号是怎么回事?