Привет, ребята, я создал список для светильников.
$result = mysql_query("SELECT date FROM ".TBL_FIXTURES." WHERE compname = '$comp_name' GROUP BY date");
$i = 1;
$d = "Start";
while ($row = mysql_fetch_assoc($result))
{
$odate = $row['date'];
$date=date("F j Y", $row['date']);
echo "<p>Fixture $i - $d to $date</p>";
}
Как вы можете видеть из запроса, дата отображается в таблице приборов. Способ, которым работает моя система, заключается в том, что когда "проигрывается", он удаляется из этой таблицы. Поэтому, когда весь раунд светильников завершен, в этой таблице не будет никаких дат для этого раунда. Они будут в другой таблице.
В любом случае я могу запустить другой запрос для дат одновременно и отображать только даты из таблицы приборов, если в таблице результатов отсутствует дата?
"SELECT * FROM ".TBL_CONF_RESULTS."
WHERE compid = '$_GET[id]' && type2 = '2' ORDER BY date"
Это будет второй запрос!
ИЗМЕНИТЬ ИЗ ЗДЕСЬ ВНУТРЕННИЕ...
В любом случае, я могу выбрать дату из двух таблиц, а затем использовать только одну, если есть совпадения. Затем используйте строки дат (GROUPED BY) для заполнения моего запроса? Возможно ли это?
Похоже, вы хотите, чтобы UNION установили два набора результатов, похожие на следующие:
SELECT f.date FROM tbl_fixtures f
WHERE f.compname = '$comp_name'
UNION SELECT r.date FROM tbl_conf_results r
WHERE r.compid = '$_GET[id]' AND r.type2 = '2'
GROUP BY date
Это должно выбрать f.date и добавить строки из r.date, которые еще не находятся в наборе результатов (по крайней мере, это поведение с T-SQL). По-видимому, он может плохо масштабироваться, но на нем много блогов (поиск: UNION T-SQL).
Кажется, что вы хотите получить UNION
запрос.
$q1 = "SELECT DISTINCT date FROM ".TBL_FIXTURES." WHERE compname = '$comp_name'";
$q2 = "SELECT DISTINCT date FROM ".TBL_CONF_RESULTS.
"WHERE compid = '$_GET[id]' && type2 = '2'";
$q = "($q1) UNION DISTINCT ($q2) ORDER BY date";
WHERE compid = '$_GET[id]'
представляет возможность для SQL Injection.TBL_FIXTURES
и TBL_CONF_RESULTS
должны читать $TBL_FIXTURES
и $TBL_CONF_RESULTS
?TBL_FIXTURES
является define()
или const
ChrisF имеет решение!
Еще одна вещь, о которой вы могли бы подумать, - это сделать удаление и перейти к другой таблице. Обычным способом решения этой проблемы является включение поля состояния для каждой записи, а не просто запрос на "все", которые вы запрашиваете для всех, где status = "x". Например, 1 может быть "промежуточным", 2 может быть "использован", 3 может быть "использован" или "архивирован". В вашем примере вместо удаления поля и "перемещения" записи в другую таблицу (что также должны произойти в цикле foreach, можно было бы предположить), вы могли бы просто обновить поле состояния до следующего состояния.
Итак, вы устранили необходимость в дополнительной таблице, удалили бы один дополнительный байт на каждую запись и теоретически улучшили бы производительность своего приложения.
Из примечаний эта страница:
//performs the query
$result = mysql_query(...);
$num_rows = mysql_num_rows($result);
//if query result is empty, returns NULL, otherwise,
//returns an array containing the selected fields and their values
if($num_rows == NULL)
{
// Do the other query
}
else
{
// Do your stuff as now
}
$num_rows
?