Все привет Пример конструкции которую использую Код (Text): SELECT (SELECT sum_lalala FROM table1) as sum1, (SELECT count_lalala FROM table2) as count1, FROM table3 и в итоге хочу добиться чтобы сделать вот примерно так sum1/count1 as result Пробую вот так Код (Text): SELECT (SELECT sum_lalala FROM table1) as sum1, (SELECT count_lalala FROM table2) as count1, sum1/count1 as result FROM table3 Не работает. Помогите, плиз)
Помочь можно, отчего ж не помочь. Как только будет понятно что на что нужно поделить. Приведите примеры таблиц. А так же что ожидаете увидеть в результате запроса.
Не совсем верно написал. Вот так будет корректнее Код (Text): SELECT (SELECT SUM(sum_lalala) FROM table1) as sum1, (SELECT COUNT(count_lalala) FROM table2) as count1, sum1/count1 as result FROM table3 В итоге, например sum1 будет хранить число 150 count1 будет хранить число 3 Соответственно нужно сделать это деление внутри запроса. Я бы мог сделать вот так Код (Text): SELECT (SELECT SUM(sum_lalala) FROM table1) as sum1, (SELECT COUNT(count_lalala) FROM table2) as count1, (SELECT SUM(sum_lalala) FROM table1) /(SELECT COUNT(count_lalala) FROM table2) as result FROM table3 И при выводе получить три столбца. Но не хочется повторно делать запросы sum1|count1| result 150 | 3 | 50
Из приведенных в пример запросов этого не следует. Или таблицы содержат по одной записи? Дайте примеры таблиц.
Нет, таблицы содержат очень много строк. И на самом деле запрос выглядит намного сложнее. И в sum1 and count1 находится как раз то что я Вам написал, за исключением того что на самом деле там другие цифры. Но суть даже не в этом. Суть в том чтобы сделать деление без повторного выполнения вложенных запросов. Так как у нас уже есть все для этого данные в sum1 and count1 Да данный момент во время деления я получаю ошибку что sum1 не найден
Если запросы получающие эти числа выглядят именно так, как в примерах выше, то так и должно быть. Вы получаете весь массив строк, без объединения. Я так понимаю, таблицы настолько секретные, что образцов не будет?
Просто для меня не совсем понятно что Вы там хотите увидеть? Если там ничего кроме цифр нету. Просто в одном случае мы получаем сумму чисел, а во втором количество строк. Вот и нужно сделать деление без повторных запросов. Так как, вот это работает Код (Text): SELECT (SELECT SUM(sum_lalala) FROM table1) as sum1, (SELECT COUNT(count_lalala) FROM table2) as count1, (SELECT SUM(sum_lalala) FROM table1) /(SELECT COUNT(count_lalala) FROM table2) as result FROM table3 А если делать замену запросов при делении на псевдонимы, то уже нет Код (Text): SELECT (SELECT SUM(sum_lalala) FROM table1) as sum1, (SELECT COUNT(count_lalala) FROM table2) as count1, sum1 / count1 as result FROM table3 Просто я хочу повторяющиеся запросы заменить на псевдонимы ранее полученных результатов. Вот и все. Но не знаю как правильно сделать деление с использование псевдонимов вместо запросов
Пример запроса деления по одному значению из разных таблиц Код (Text): SELECT (`t1`.`colX` / `t2`.`colY`) AS `result` FROM `t1`, `t2` WHERE `t1`.`idx` = 'x' AND `t2`.`idy` = 'y' При этом нужно понимать, что если `idx` и `idy` неуникальны, то ответов может быть больше, чем один.
Но это получиться в итоге снова повторный пересчет данных, если я не ошибаюсь. Что приведет к повторным вычислениям sum1 и coun1 и только потом деление. Именно этого я и хочу избежать чтобы база на 1,5 млн записей обрабатывалась как можно быстрее