![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
![]()
Есть две таблицы - 1)Категория(category) и 2)Товар-категория(tovcat)
1) столбцы id|cname 2) tov_id(id товара)|cat_id(id категории) Надо вывести количество товаров в каждой категории( один товар может сразу быть в нескольких категориях). Надо получить таблицу id|cname|количество Делаю такой запрос - всё работает Код:
Код:
Наверно нужно использовать join, но у меня ничего не получается Последний раз редактировалось Kolik317; 16.10.2011 в 23:16. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
p.s. извините, я писал чисто автоматически - по правилам SQL - не разбирая, что и из каких таблиц Вы выбираете. Поэтому логику запроса проверяйте самостоятельно. я лишь сделал так, чтобы он работал. |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
![]()
Спасибо большое, это то что надо.
Еще одно, не хочу новую тему создавать из за нуб вопросов. Есть три таблицы Код:
Вот что я пытался сделать: Код:
Последний раз редактировалось Kolik317; 17.10.2011 в 03:40. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
проверяйте данные (например, уберите группировку и выполните запрос оп всем полям:
Код:
ну и ещё. если это не учебное задание, а Вы проектируете задачу, то спешу Вас огорчить (надеюсь, что ещё не поздно изменить/доработать)! Цена товара - это не сумма покупки! В покупке (таблица purchases ) должно быть количество товара (это как минимум). А как максимум и цена и сумма покупки. Да и дата покупки явно не помешает. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
![]()
А смысл выводить количество товара, если он разный и с разной ценой?
Дата естественно есть, это упрощенная же версия. Я хотел чтобы можно было выводить информацию, как на чеке в супермаркете - каждый купленный товар, его цена, и общая сумма. Получается надо либо делать еще одну таблицу чтобы было получатель-покупка-покупка_товар-товар, или так же считать суммой, и в одной покупке будет только один товар, а всю покупку клиента за день просто смотреть по дате. |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цена и сумма за этот товар - это разные вещи! Вы, когда покупаете 12 бутылочек пива - в одной строчке написана цена за ОДНУ бутылочку, потом количество - потом общая стоимость ДВЕНАДЦАТИ бутылочек. или в Вашем чеке будет 12 строчек?! Так всё равно не покатит. А если Вы полкило креветок возьмёте - в чеке будет цена за килограм + вес, не так ли?! |
|
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
![]()
Так если у меня в схеме в одной "покупке" только один товар?
Получается сейчас я в чек вывожу список покупок за день(час,минуту), тоесть Бутылка пива 100р Бутылка пива 100р Бутылка пива 100р Бутылка водки 200р Потом просто суммирую поля покупок за этот день и получается что сумма покупки 500р. Это плохо? А делать чтобы в покупке был так же только один товар разного количества, не вижу смысла, особого удобства не добавит. Лучше тогда схема получатель-покупка-покупка_товар-товар, тогда за покупку будет считаться один приход в магазин, за который он мог купить любое количество разного товара. Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А можно (и нужно) держать:
Бутылка пива 3, ед.изм шт, цена 100р Бутылка водки 1, ед.изм шт, цена 200р Селедка 1.43, ед.изм кг, цена 150р А стоимость тоже можно держать, а можно и запросом рассчитывать как округленное до копеек произведение количества на цену
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 14.08.2009
Сообщений: 64
|
![]()
Так и сделал. Спасибо
Подскажите еще. Вот запрос Код:
Теперь хочу чтобы он вывел строки, у которых будет pprice>3000( такие точно есть) и добавляю в WHERE pprice>3000. И он не выводит ни одного поля. Тоесть он как-то не понимает что за поле pprice. Наверно это особенности аксеса. Как победить? UPD всё, нашел, спасибо этому форуму. Условие это надо ставить в HAVING Код:
Последний раз редактировалось Kolik317; 17.10.2011 в 23:42. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Спасибо в основном Serge_Bliznykov, он вас упорно убеждал. А стоимость лучше с округлением до копейки считать или до рубля, если копейки не в ходу, причем по каждой позиции, а не результат SUM округлять. Что выдаст например 1.333*17=22.661. Обычно у СУБД бывает функция округления
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задана последовательность чисел в формате:сначала количество цифр в числе, потом - цифры числа. Подсчитать количество. | Arn1 | Помощь студентам | 4 | 03.10.2011 20:03 |
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются | kenta | БД в Delphi | 2 | 29.10.2009 08:28 |
Объеденение полей запроса в для отображения нескольких полей в одном списке | mrCreator | Microsoft Office Access | 3 | 08.08.2009 00:53 |
количество цифр и количество символов до первой гласной буквы | 111111 | Общие вопросы C/C++ | 2 | 22.12.2008 12:15 |