【发布时间】:2015-06-28 13:33:47
【问题描述】:
我正在尝试获取过去几个小时的 mysql 查询结果,但没有得到。我希望你能帮助我。
我有两张桌子。第一个表称为“驱动器”,非常大,有超过 200000 行和 30 列,结构如下:
plate | time from | time to
ab222 | 2015.05.12 08:00 | 2015.05.13 11:37
cv481 | 2015.05.14 12:08 | 2015.05.14 14:11
第二个称为“燃料”,长度要短得多,大约 5000 行,但也有 22 列。它的结构是这样的:
plate | time | amount | price
ab222 | 2015.05.13 09:22 | 2.3 | 32.22
cv481 | 2015.05.14 13:59 | 12.2 | 17.7
我要做的是为“燃料”表中的每一行显示正确的“驱动器”。这意味着“燃料”表的时间必须介于“驱动器”表的“开始时间”和“结束时间”之间,并且盘子必须相同。结果应该显示两个表的列(大约 52 列和 5000 行,因为对于“燃料”表中的每一行,必须是“驱动器”表中的一个合适的驱动器)。
我不习惯使用 mysql,所以我搜索了很多并尝试了很多。我所做的以下尝试似乎接近我所需要的:
INNER JOIN fuel.* ON
drives.plate = fuel.plate
WHERE fuel.time Between
drives.timefrom AND
drives.timeto
但是没有用。
*****更新*****
感谢您迄今为止的帮助。我玩了一些查询,并注意到一个非常奇怪的行为。但首先你们是对的——我决定不使用“JOIN”,而是查询 2 个表并显示组合结果。这似乎是更好的解决方案。
但是现在的问题。当我在 phpMyAdmin 中查询时,结果是正确的,并且显示了一些匹配项。但是当我将相同的查询传输到 php 时,它会显示错误。
这是我连接到我的数据库的方法。效果很好:
$con = mysqli_connect("localhost","root","pass","test");
mysqli_options($init, MYSQLI_OPT_LOCAL_INFILE, true);
下面是 phpMyAdmin 中的 MySQL 查询:
SELECT fuel.* , drives.* FROM fuel, drives WHERE fuel.plate = drives.PLATE
AND fuel.time BETWEEN drives.time from AND drives.time to
这里在php中也是一样的:
$con > query ("SELECT fuel.* , drives.* FROM fuel, drives WHERE fuel
plate = drives.PLATE AND fuel.time BETWEEN drives.time from AND
drives.time to");
并且它在第一行的以下代码块中导致错误“警告:mysql_fetch_array() 期望参数 1 是资源,布尔值给定错误”:
<?php while($row=mysql_fetch_array($con)) { ?> <tr> <td><p>
<?php echo $row['product_id']; ?></p></td> <td><p>
<?php echo $row['product_name']; ?></p></td> <td><p>
<?php echo $row['cat_name']; ?></p></td> </tr> <?php } ?>
我搜索了很多,并找到了一些答案,例如变量 $con 为“空”或数组错误。但是,如果我使用以下查询来导入 csv 文件,它正在工作:
$con>query( "LOAD DATA LOCAL INFILE 'drives.csv' INTO TABLE
rentals FIELDS TERMINATED BY '' ENCLOSED BY '\"' LINES
TERMINATED BY '\r\n' IGNORE 1 LINES");
很遗憾,我无法让我的查询和结果显示正常工作。很抱歉打扰你,但你能告诉我,有什么问题吗?非常感谢。
***** 工作解决方案 *****
我让它工作了。我的查询是错误的。这是工作的:
$blub = mysqli_query($con,"SELECT fuel.* , drives.* FROM fuel, drives
WHERE fuel.plate = drives.PLATE AND fuel.time BETWEEN drives.time_from AND
drives.time_to");
【问题讨论】:
-
不工作是什么意思?是错误还是什么?
-
我相信它的
INNER JOIN fuel ON....不需要* -
请提供一个完整示例,说明您希望一行的外观
-
@Rahul:它什么也没发生。马丁:结果应该是盘子|时间从|时间到|盘子| 高分辨率照片| CLIPARTO时间 |金额 |符合条件时的价格