Ниже у меня есть рабочая реализация запрашивая выбранную таблицу, $ таблицы, и возвращение $ NumRows рядов упорядоченных по убыванию по первой колонке таблицы:Существует ли более простой способ запроса на основе результата другого запроса?
$cQuery = "SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$table' LIMIT 1";
$mysqli = new mysqli(DB_LOCATION , DB_USERNAME , DB_PASSWORD);
if ($mysqli -> connect_errno)
err("Could not connect to DB. " . $mysqli->connect_error);
$result = $mysqli -> query($cQuery) -> fetch_array();
$query = "SELECT * FROM $table ORDER BY $result[0] DESC LIMIT $numRows";
$result = $mysqli -> query($query);
Я задавался вопрос, если кто-нибудь знает способ сделать это это только одно заявление mysqli? Должны быть два табличных запроса; один для идентификатора столбца и второй для конкретного запроса, но нужно ли его отличать, как у меня?
Любая критика приветствуется.
Одд ... Я прочитал ваш окончательный запрос как: Получить верхний '$ numRows' от '$ table', упорядоченный по тому, что случайное имя_столбца возвращается первым запросом. Вы уверены, что он работает? –
@Denis Я считаю, что он работает по назначению. Первый запрос возвращает столбцы в их порядковой позиции из того, что я испытал, поэтому, ограничив запрос 1, он возвращает только первую строку. Я могу ошибаться. Должен ли я указывать в первом запросе? – Joshua
Первый запрос возвращает столбцы в том порядке, в котором они отображаются на диске. Вам нужно указать явное выражение 'order by' в SQL, иначе порядок, в который строки должны быть возвращены, не определен. –