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

253K
.
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