Помогите, пожалуйста, составить запрос. Дано: table_1 (name/e_count/price): vasya 2 12 vasya 1 1 fedya 4 4 petya 1 10 table_2 (name/e_count/price): vasya 1 2 fedya 3 1 misha 1 3 misha 1 1 сами таблицы разные, но структура суммируемых столбцов в них одинакова нужно получить таблицу со следующими столбцами: имя/сумма e_count из всех таблиц/сумма price из всех таблиц, т.е.: vasya 4 15 fedya 7 5 petya 1 10 misha 2 4 как должен выглядеть запрос? не могу сообразить.
пробовал так: SELECT `name` , (SUM( `table_1`.`price` ) + SUM( `table_2`.`price` )) AS agr_price, (SUM( `table_1`.`e_count` ) + SUM( `table_2`.`e_count` )) AS agr_count FROM `table_1`, `table_2` WHERE (`table_1`.`name` = `table_2`.`name`) GROUP BY (`table_1`.`name`, `table_2`.`name`) ругается: Invalid use of group function что делать?
Интересно, а чем же по Вашему "мы" занимаемся? Как раз-таки учим. А когда сталкиваемся с конкретными проблемами, которые самим решить пока не по силам, просим совета у опытных людей. Мой вопрос предполагал чуть более подробный и конкретный ответ. Если я лезу с вопросом (пусть даже простым) на форум, это не значит, что я не пробовал разобраться в проблеме сам или не искал соответствующую документацию. Искал, читал, пробовал так и эдак. Не получается! А для опытного программиста БД, работающего с MySQL, ответить на мой вопрос - минутное дело. Или что, руки отвалятся? Я ведь не прошу написать за меня программу или "разжевать" причины ошибки. Я прошу пример грамотно составленного запроса, глядя на который можно понять а) причину ошибки, б) методику решения задач такого типа. Я конечно понимаю, что для некоторых груз накопленных знаний и опыта слишком тяжел, чтобы просто сказать: "попробуй так ...", "об этом написано там-то" или хотя бы просто промолчать. Понятное дело, трудно не сумничать, когда такой умный, а конкретный ответ давать лениво. Иначе как же дать понять ламеру и остальным форумчанам, какой ты на самом деле умный?.. "Читай мануал, <дальше исчерпывающая характеристика задавшего вопрос>!" - звучит ведь очень солидно, не правда ли? Как тут удержаться? И все-таки я бы попросил любителей отвечать лаконичным "RTFM" взять себя в руки и не захламлять тему умствованиями, суть которых: "такие э-л-е-м-е-н-т-а-р-н-ы-е вопросы могут задавать только совсем уж непроходимые тупицы и лентяи". Если лениво отвечать конкретно - лучше помолчите. Вспомните, что когда-то сами были новичками.
Эээ... сознаюсь, маленько соврал. Приведенный запрос - один из многих, которые пытался "сваять", но которые так не дали нужных мне результатов. К тому же я еще и немного упростил суть задачи. Дело в том, что таблицах table_1, table_2 нет как таковых имен пользователей. Вместо "вась" и "федь" там стоят id пользователей, а имена приведены в третьей таблице users, структура которой: (id|username). Так что в изначальном запросе было что-то такое: SELECT `users`.`username` , (SUM( `table_1`.`price` ) + SUM( `table_2`.`price` )) AS agr_price, (SUM( `table_1`.`e_count` ) + SUM( `table_2`.`e_count` )) AS agr_count FROM `table_1`, `table_2`, `users` WHERE (`table_1`.`user_id` = `users`.`id` || `table_2`.`name` = `users`.`id`) GROUP BY (`table_1`.`name`, `table_2`.`name`)
Все, разобрался (не без посторонней помощи =) ). Решить задачу удалось двумя способами: при помощи связки UNION + вложенный запрос, а так же вложенного запроса с JOIN-ом. Если интересно, могу выложить.