Я пытаюсь получить результат запроса mysql за последние часы, но не получил его. Я надеюсь, что вы можете мне помочь.mySQL innerjoin, где условие не работает
У меня есть две таблицы. Первая таблица называется «дисками» и довольно большой с более чем 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
но это не сработало.
***** UPDATE *****
Спасибо за вашу помощь до сих пор. Я играл с некоторыми запросами и заметил довольно странное поведение. Но прежде всего вы, ребята, были правы - я решил не использовать «JOIN», а запросить 2 таблицы и показать комбинированные результаты. Кажется, это лучшее решение.
Но теперь проблема. Когда я запрашиваю phpMyAdmin, результат верный, и он показывает некоторые совпадения. Но когда я передаю тот же запрос на php, он показывает ошибку.
Вот как я подключаюсь к своей базе данных. Это прекрасно работает:
$con = mysqli_connect("localhost","root","pass","test");
mysqli_options($init, MYSQLI_OPT_LOCAL_INFILE, true);
Вот запрос MySQL в PhpMyAdmin, который работает:
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 будет ресурсом, boolean задано ERROR 'в следующем кодовом блоке в первой строке:
<?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 - «null» или массив ошибочен. Но если я использую следующий запрос, чтобы импортировать файл 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");
Не работает средство? Это ошибки или что? – Rahul
Я считаю, что его 'INNER JOIN fuel ON ....' Нет необходимости ** '*' ** –
Просьба представить полный пример того, что вы ожидаете от строки, которая выглядит как – user2479930