Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
1
SQLite

Выборка из двух таблиц, функция SUM()

03.05.2015, 23:09. Просмотров 1454. Ответов 3
Метки нет (Все метки)

Пытаюсь вывести из след. таблиц наименование товара(name_goods из таблицы goods) и сколько его было продано(сумма amount из таблицы selling).
SQL
1
2
CREATE TABLE goods(id_goods INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name_goods TEXT NOT NULL, currency TEXT NOT NULL, price INTEGER NOT NULL,id_provider INTEGER NOT NULL, FOREIGN KEY(id_provider) REFERENCES provider (id_provider));
CREATE TABLE selling(id_selling INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, DATE TEXT NOT NULL,amount INTEGER NOT NULL,sum_of_sale INTEGER NOT NULL,comment TEXT ,number_of_disk INTEGER NOT NULL, id_goods INTEGER NOT NULL,id_manager INTEGER NOT NULL, FOREIGN KEY(id_goods) REFERENCES goods(id_goods),FOREIGN KEY(id_manager) REFERENCES manager(id_manager));
пишу функцию:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public List<string> sell_goods()
        {
            List<string> goods_count = new List<string>();
            using (SQLiteConnection connect = new SQLiteConnection(@"Data Source=bd_kursov.sqlite;Version=3;New=False;Compress=True;"))
            {
                connect.Open();
                using (SQLiteCommand fmd = connect.CreateCommand())
                {
                    fmd.CommandText = @"SELECT name_goods as g FROM goods, SUM(amount) as s FROM selling where id_goods = (SELECT id_goods FROM goods where name_goods=g);";
                    fmd.CommandType = CommandType.Text;
                    SQLiteDataReader r = fmd.ExecuteReader();
                    while (r.Read())
                    {
                        goods_count.Add(Convert.ToString(r["g"]) + "|" + Convert.ToString(r["s"]));
                    }
                }
            }
            return goods_count;
 
        }
В результате получаю ошибку:
Необработанное исключение типа "System.Data.SQLite.SQLiteException" в System.Data.SQLite.dll

Дополнительные сведения: SQLite error

near "(": syntax error


Не понимаю, как реализовать этот запрос другим способом. Помогите, пожалуйста, разобраться! спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2015, 23:09
Ответы с готовыми решениями:

SUM с двух таблиц
Доброго времени суток! Народ подмогите что-то запутался (глаз уже замылился) Проблема вот в чем,...

Разница двух sum() из разных таблиц
Здравствуйте! Нужна помощь с запросом Есть запрос где: нужно просуммировать два столбца из...

Матрица и функция (Сложение двух матриц функцией sum)
Всем привет. Не получается создать функцию. Задача: Сложение двух матриц функцией sum. ...

Выборка из двух таблиц
Добрый день Делаю программку, нужно следующее: выбрать из таблиц заболевания и прививки записи...

3
Модератор
Эксперт .NET
5266 / 4069 / 1174
Регистрация: 12.10.2013
Сообщений: 11,826
Записей в блоге: 2
04.05.2015, 06:22 2
sherbakova96, Судя по документации SQLite, оператора SUM() в запросе SELECT нет. Но может я его не заметил.
Если у вас стоит пакет SQLite, посмотрите документацию к нему, там есть все структуры построения запросов.
0
26 / 26 / 10
Регистрация: 18.08.2014
Сообщений: 208
04.05.2015, 07:55 3
У вас запрос содержит 2 FROM!!!! SUM групповая операция, а у вас в запросе отсутствует группировка по какому либо полю!!!
Совет: проверяйте запросы в каком-либо менеджере, а затем уже вставляйте код. Так же в коде лучше использовать, по возможности, самый короткий запрос. В БД можно создать View к которому и будете обращаться из кода

Добавлено через 6 минут
Ваш запрос будет выглядеть примерно так:
SQL
1
2
3
4
5
6
SELECT goods.name_goods, 
SUM(selling.amount) 
FROM goods 
JOIN amount 
ON goods.id_goods = goods.id_goods
GROUP BY goods.name_goods
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
04.05.2015, 10:46  [ТС] 4
Спасибо большое, теперь поняла. Все работает
Только видоизменила немного запрос:
SQL
1
2
3
4
5
6
SELECT goods.name_goods, 
        SUM(selling.amount)  AS s
        FROM goods 
        JOIN selling 
        ON selling.id_goods = goods.id_goods
        GROUP BY goods.name_goods
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2015, 10:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выборка из двух таблиц
Здравствуйте. Имеются две таблицы CREATE TABLE IF NOT EXISTS `vid` ( `id` int(11) NOT NULL...

Выборка из двух таблиц
Здравствуйте ! Подскажите пожалуйста каким образом можно выполнить задачу : &quot;Выведите список и...

Выборка из двух таблиц
Есть обычный запрос типа: select t1.id, t2.id from t1, t2; допустим в t1 хранится 4 записи...

Выборка из двух таблиц
Добрый день! Прошу помощи. Есть две таблицы, одна с номерами телефонов и другими данными, вторая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.