Mr.M.I.T. этот вариант был рассмотрен мною ранее и отброшен как неподходящий. И ваще хочу добиться хотя бы NF1
братцы, помогите, разработка встала. Запрос не такой уж и тривиальный. Код (Text): --есть таблицы id 1 2 5 oid|gid|quantity|price 1 | 2| 4| 10 1 | 9| 1| 14 2 | 11| 2| 20 5 | 7| 4| 4 5 | 5| 3| 6 5 | 36| 1| 11 --запрос должен вывести: id|sum 1| 54 -- так как 10*4+14*1 2| 40 -- 20*2 5| 45 -- 4*4+6*3+11*1
[sql] CREATE TABLE IF NOT EXISTS `data` ( `oid` int(11) NOT NULL, `gid` int(11) NOT NULL, `quantity` int(11) NOT NULL, `price` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `data` (`oid`, `gid`, `quantity`, `price`) VALUES (1, 2, 4, 10), (1, 9, 1, 14), (2, 11, 2, 20), (5, 7, 4, 4), (5, 5, 3, 6), (5, 36, 1, 11); CREATE TABLE IF NOT EXISTS `ids` ( `id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `ids` (`id`) VALUES (1), (2), (5); [/sql] Запрос: [sql] SELECT `i`.`id`, SUM(`d`.`price`*`d`.`quantity`) FROM `ids` AS `i` LEFT JOIN `data` AS `d` ON `i`.`id`=`d`.`oid` GROUP BY `i`.`id` [/sql] Результат запроса: Код (Text): id SUM(`d`.`price`*`d`.`quantity`) 1 54 2 40 5 45 Вроде работает, особо не тестил.
оу, ее, премного благодарен. оффтоп: посоветуйте че-нить хорошее по теории SQL, что б и я такие запросы мог писать =).
//Акринел почувствовал, что к его 20-ти годам приплюсовали еще годков эдак 30-40 По MySQL я читал всего одну книгу(все никак не соберусь еще чего-нибудь купить) - MySQL справочник по языку. Но это просто практический справочник, особой теории там не заметил(те кто читали английский вариант, говорят, что книжка косноязычна, ничего не могу сказать английскую версию не читал). Psih меня подсадил на любопытный блог, когда не лениво продираться сквозь дебри английского языка читаю. Ну и еще есть упражнения, но я пока так за них и всерьез и не взялся.
akrinel )) я в инете на ты, имел ввиду, что бы все советовали. Сейчас у меня есть Люк Веллинг и Лора Томсон "MySQL. Учебное пособие", Вильямс 2005. Но из-за большого кол-ва работы совсем нет времени на ее изучение. upd: в итоге у меня такой запрос [sql]SELECT o.id, o.uid, o.mid, o.timestamp, o.status, SUM(og.price*og.quantity), u.login, u.name, u.fname, u.surname, m.name AS manager FROM `tt_user` AS u, `tt_admin` AS m, `tt_orders` AS o LEFT JOIN `tt_orders_goods` AS og ON o.id=og.oid WHERE o.uid=u.id AND o.mid=m.id GROUP BY og.oid ORDER BY `o`.`id` ASC[/sql] `tt_orders` AS o - должно быть последним в списке, иначе ошибка - неизвестное поле o.id. Почему так?