|
|
|
|
|
для: mihdan
(04.12.2008 в 17:06)
| | Аллах акбар! | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2008 в 18:46)
| | up | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2008 в 18:46)
| | Trianon как всегда на высоте-благодарствую, облегчили мне жизнь. Ушел читать мануал по SQL, в частности про JOIN'ы | |
|
|
|
|
|
|
|
для: BinLaden
(27.11.2008 в 18:48)
| | Спасибо. Это понятно. | |
|
|
|
|
|
|
|
для: mihdan
(27.11.2008 в 17:46)
| | SELECT GROUP_CONCAT(`id`) ... | |
|
|
|
|
|
|
|
для: mihdan
(27.11.2008 в 17:46)
| |
SELECT SUM(mark) AS sm1, COUNT(mark) AS cm1 FROM
FROM `games` AS g JOIN `first-marks` AS m ON m.id_game=g.id
WHERE `season`='${Aseason}'
AND `competition`='${Acomp}'
AND `helper_first`='${id}'
|
SELECT SUM(mark) AS sm2, COUNT(mark) AS cm2 FROM
FROM `games` AS g JOIN `second-marks` AS m ON m.id_game=g.id
WHERE `season`='${Aseason}'
AND `competition`='${Acomp}'
AND `helper_second`='${id}'
|
| |
|
|
|
|
|
|
|
для: Trianon
(27.11.2008 в 14:19)
| | Спасибо. Все верно работает. Только вот запросов многовато, нельзя ли оптимизировать?
Офтоп:
Использую запрос для получения id:
<?php
$sql = "SELECT `id`
FROM `games`
WHERE `season`='${Aseason}'
AND `competition`='${Acomp}'
AND `helper_first`='${id}'
";
$exec = mysql_query($sql);
if (mysql_num_rows($exec) > 0) {
while($row = mysql_fetch_assoc($exec)) {
$idsA[] = $row['id'];
}
$ids = implode(',', $idsA);
}
?>
|
Можно ли прямо в запросе (думаю что можно) получить $ids в формате через запятую,
чтобы отказаться от цикла. Чтот никогда об этом не думал? | |
|
|
|
|
|
|
|
для: mihdan
(27.11.2008 в 13:10)
| | Вместо AVG вытаскивайте отдельно SUM и COUNT, отдельно для first_mark и для second_mark
Раздельно складываете суммы и количества.
Затем делите одно на другое. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2008 в 11:57)
| | Так как сделать по уму. Я понял, что не прав. Помогите с запросами | |
|
|
|
|
|
|
|
для: mihdan
(27.11.2008 в 11:43)
| | представьте себе выборку 5 5 5 для first и 1 для second
avg(5,5,5,1) = 16/4 = 4
а Вы считаете его так: avg(avg(5,5,5), avg(1)) = avg(15/3, 1) = avg(5, 1) = 6/2 = 3
Ошибка в 25%
какие уж тут сотые доли. | |
|
|
|
|