Различные вопросы по PHP и MySQL

103K
.
Str@nnik
mRWiNeT,
$q = mysql_query("SELECT *, (`rating` + `bonus`) AS summ FROM `users` ORDER BY `summ` DESC LIMIT $start, $p_page");
while ($ank = mysql_fetch_assoc($q)) {
// вывод анкеты
}

зы: я этот вариант в первую очередь подумал, правда там функцию sum() на автомате дописал вот и написал ниже что опечатка. Но как я понял этот вариант не подходит.
// хотя по идеи все же правильно. блин, запутался сам уже)
.
Udesign
че та у меня не получается

я пита юс писать на базу

mysql_query("UPDATE `ud_taxmin_bol_jam_hisob` SET 
`TJ` = `TJ` + 1,
`jami` = `jami` + 1
WHERE `azo_id` = '" . $res['azo_id'] . "'")  or die(mysql_error());
mysql_query("UPDATE `ud_taxmin_bol_jam_oyin` SET 
`TJ` = `TJ` + 1,
`jami` = `jami` + 1
WHERE `azo_id` = '" . $res['azo_id'] . "'")  or die(mysql_error());
mysql_query("UPDATE `users` SET 
`balans`= `balans` + 1 
WHERE `id` = '" . $res['azo_id'] . "'") or die(mysql_error());

вот так но на базу не пишет
mysql_query("UPDATE `ud_taxmin_bol_jam_hisob` SET 
`TJ` = `TJ` + 1,
`jami` = `jami` + 1
WHERE `azo_id` = '" . $res['azo_id'] . "'")  or die(mysql_error());

эти столбцов что та не так сделал что ли?
.
Let Mortal Kombat begin
Здравствуйте, интересует MYSQL запрос один, который никак у меня не получается.

Таблица group: mainid, name
Таблица elements: elementid, `mainid`, time

Задача: вывести данные из таблицы group сортируя результат по полю time из таблицы elements.
Состряпал что-то вроде
SELECT `group`.*, MAX(`elements`.`time`) AS `time` FROM `group` LEFT JOIN `elements` USING(`mainid`) ORDER BY `time` DESC
Ожидаемо выводит только одну самую новую группу, а вот как вывести все?
.
Let Mortal Kombat begin
Да и вообще выбирается запись из второй таблицы без учёта поля mainid, а по принципу MAX
.
Let Mortal Kombat begin
Как вариант сделать так:
SELECT `group`.*, `elements`.`time` FROM `group` LEFT JOIN `elements` USING(`mainid`) GROUP BY `mainid` ORDER BY `time` DESC
Но возникает вопрос о нагрузке, насколько группировка плоха?
.
seg0ro, функция MAX() возвращает один же кортеж)
.
Str@nnik
# seg0ro (10.08.2016 / 09:10)
Задача: вывести данные из таблицы group сортируя результат по полю time из таблицы elements.
SELECT `group`.* FROM `group` 
LEFT JOIN `elements`
USING(`mainid`)
ORDER BY `elements`.`time` DESC
.
Str@nnik
seg0ro, посмелюсь предположить что тебе нужно получить самые последние записи для каждой из групп? Тогда мне кажется логичнее искать только те записи, которые существуют для каждой группы, то есть использовать JOIN. Ну и как ты выше написал группировать по mainid
SELECT `group`.*, `elements`.`time` FROM `group` JOIN `elements`
USING(`mainid`)
GROUP BY `group`.`mainid`
ORDER BY `elements`.`time` DESC
.
Let Mortal Kombat begin
не, не пойдёт. В этом случае сортировка идёт по первому элементу группы, а не последнему
.
Let Mortal Kombat begin
Таки встроенным запросом нужно вычислять одну последнюю запись группы и по времени этой записи сортировать. Но вот с вложенными запросами у меня чуть хуже чем никак
Всего: 7969