powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Снова вопрос к Гуру
25 сообщений из 31, страница 1 из 2
Снова вопрос к Гуру
    #32192882
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не пинайте сильно, еще неразобрался со всем

Возможно ли в Мускуле
подсчитывать сумму в столбце, т.е

# БД : `gd`
# -------------------------------------------------------
# Структура таблицы `klient`
#

CREATE TABLE klient (
id smallint(5) unsigned NOT NULL auto_increment,
name char(50) NOT NULL default '',
UNIQUE KEY id (id),
KEY name (name)
) TYPE=MyISAM;

INSERT INTO klient VALUES (1, 'ООО "Транзит"');
INSERT INTO klient VALUES (2, 'ООО "Транзит"');

# --------------------------------------------------------
# Структура таблицы `mnpz`

CREATE TABLE mnpz (
id smallint(5) unsigned NOT NULL auto_increment,
data date NOT NULL default '2003-06-31',
gsm varchar(10) NOT NULL default '',
stan varchar(60) NOT NULL default '',
nn varchar(20) NOT NULL default '',
netto varchar(20) NOT NULL default '0,000',
vag varchar(20) NOT NULL default '',
nu smallint(20) unsigned NOT NULL default '0',
UNIQUE KEY id (id),
KEY gsm (gsm),
KEY data (data)
) TYPE=MyISAM;

# Дамп данных таблицы `mnpz`

INSERT INTO mnpz VALUES (3, '2003-05-06', 'А-95', 'Улыбышево', '', '29,705', '1', 1);
INSERT INTO mnpz VALUES (4, '2003-05-11', 'А-95', 'Улыбышево', '', '54,904', '1', 2);

Как я понимаю таблицы связаны между собой

Запрос

SELECT data, gsm, SUM(netto), SUM(vag)
FROM mnpz
WHERE 1
GROUP BY data, gsm
ORDER BY data, gsm

получаем таблицу

I дата отгр. I гсм I Итого I вагон I
--------------------------------------
I 2003-06-06 I А-95 I 29,705 I 1 I
--------------------------------------
I 2003-06-11 I А-95 I 54,904 I 1 I
--------------------------------------

а нужно еще столбик сложить, чтоб было в конце таблицы
примерно следующее
I 84,609 I 2 I

одним запросом сдесь не обойтись ?
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32192938
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше, наверно, на клиенте суммировать итог по колонке.
Так просто легче - да и при выводе данных постранично можно будет счистать итог по странице, или нарастающий итог по всем выведенным страницам.
Много ресурсов это не отожрет, так что перекладывать эту задачу на сервер, наверно, нет смысла...
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193007
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И опять все неправильно.\r
Во-первых, у тебя (смотри предыдущий пост /topic/37030) есть уже таблица с типом топлива. Зачем ты его пишешь в виде varchar, а не в виде ссылки на другую таблицу?\r
\r
Во-вторых, netto varchar(20) NOT NULL default '0,000', - это отвратительно. netto int not null default 0. И вставляй туда не '123,567', а нормальное число - обязательно целое число твоих литров/вагонов.\r
Целое потому, что для float неизбежны ошибки округления с неизвестной лдя тебя точностью.\r
\r
В-третьих, у тебя есть таблица с городами. Используй ссылку на города.
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193034
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сильно извиняюсь, с этого понедельника только ковыряю Мускуль,
есть проблемы в понимании и куча вопросов.

Базы были созданы до меня, вот их то и ковыряю, переделываю , чтоб все работало...

но думаю к концу недели если не разберусь ...
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193438
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Alfa, а ты БД вообще занимался или нет? Если нет советую хоть немного почитать про реализацию реляционных БД.

mahoune
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193790
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2mahoune
неа, т.е я пока полный лох

я больше по сетям спец.

вот ее и читаю, но пока плохо понимаю о чем речь.
---------------------------------------------------------------
еще вопрос (по предыдущему) в чем я ошибаюсь

SELECT
//список выбора
ctime, fuel_types.name, cities.name, prihod, rashod, ostatok
//используемые таблицы
FROM fuel_usage_stats, fuel_types, cities
//условие
WHERE fuel_types.id = fuel_usage_stats.fuel_types_id
AND cities.id = fuel_usage_stats.cities_id
//имя_столбца
GROUP BY fuel_types_id, cities_id, ctime, fuel_types.name, cities.name
//сортировать
ORDER BY ctime

хотелось получить
---------------------------------------------------------
I дата I гсм I база I приход I расход I остаток I
----------------------------------------------------------
I 2003-06-06 I А-95 I Транзит I 0 I 0 I 100 I
----------------------------------------------------------

а получаю
------------------------------------------------------------
I дата I гсм I база I приход I расход I остаток I
------------------------------------------------------------
I 2003-06-06 I Транзит I 0 I 0 I 100 I
------------------------------------------------------------
поле fuel_types.name (гсм) принципиально не показывается, если заменить
на fuel_types.id то будет показываться id, а мне надо name выводить
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193812
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поля fuel_types.id и fuel_usage_stats.fuel_types_id имеют одинаковый тип?
И проиндексированы ?
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193819
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
  ctime, ft.name, c.name, prihod, rashod, ostatok 
FROM fuel_usage_stats fu, fuel_types ft, cities c
WHERE
  ft.id = fu.fuel_types_id 
  AND
  c.id = fu.cities_id 
GROUP BY fu.fuel_types_id, fu.cities_id, ctime, ft.name, c.name 
ORDER BY ctime


Блин. Кинь запрос создающий таблицы, и заполняющий их. Результат уже привел... А то я вообще немогу понять что ты хочешь...
Код: plaintext
1.
2.
3.
4.
 -- Исползуй для форматирования SQL кода:
 
[srс]
[/srс]
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193884
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2BigHarry
Да конечно
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193898
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2mahoune\r
\r
я все про первый мой вопрос <a href=/topic/37030>здесь</a>\r
\r
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
\r
CREATE TABLE `cities` (\r
  `id` int(11) NOT NULL auto_increment,\r
  `name` varchar(255) default NULL,\r
  PRIMARY KEY  (`id`)\r
) TYPE=MyISAM\r
\r
CREATE TABLE `fuel_types` (\r
  `id` int(11) NOT NULL default \'0\',\r
  `name` varchar(5) default NULL,\r
  PRIMARY KEY  (`id`)\r
) TYPE=MyISAM\r
\r
CREATE TABLE `fuel_usage_stats` (\r
  `id` int(11) NOT NULL auto_increment,\r
  `ctime` date NOT NULL default \'2003-06-31\',\r
  `fuel_types_id` int(11) NOT NULL default \'0\',\r
  `cities_id` int(11) NOT NULL default \'0\',\r
  `prihod` int(11) NOT NULL default \'0\',\r
  `rashod` int(11) NOT NULL default \'0\',\r
  `ostatok` int(11) NOT NULL default \'0\',\r
  PRIMARY KEY  (`id`)\r
) TYPE=MyISAM\r
\r
#\r
INSERT INTO cities (name) VALUES (\'Антарес\');\r
INSERT INTO cities (name) VALUES (\'Транзит\');\r
\r
INSERT INTO fuel_types VALUES(1, \'А-95\');\r
INSERT INTO fuel_types VALUES(2, \'А-92\');\r
INSERT INTO fuel_types VALUES(3, \'А-80\');\r
INSERT INTO fuel_types VALUES(4, \'А-76\');\r
INSERT INTO fuel_types VALUES(5, \'Дт\');\r
\r
INSERT INTO fuel_usage_stats (ctime, fuel_types_id, cities_id, prihod, rashod, ostatok)\r
VALUES (\' \', 1, 2, 20000, 10000, 200);\r
\r
\r
ни как не могу понять почему не выводиться поле в HTML,\r
хотя в EMS MySQL Manager`e запрос выполняется корректно\r
\r
и с алисами тоже не выводит (я уже так пробовал)
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193919
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что не выводится в html - это, уже, похоже другая проблема - и запрос тут непричем. Тем более - что в EMS этот запрос работает нормально.
Может - что-то с разметкой? Если этот штмл посмотреть в блокноте, а не в браузере?
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193931
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 -- По такому запросу:
 
SELECT
  ctime, LEFT(ft.name,  20 ), LEFT(c.name,  20 ), prihod, rashod, ostatok
FROM fuel_usage_stats fu, fuel_types ft, cities c
WHERE
  ft.id = fu.fuel_types_id
  AND
  c.id = fu.cities_id
GROUP BY fu.fuel_types_id, fu.cities_id, ctime, ft.name, c.name
ORDER BY ctime

 -- Вот такой результат
 
+ ------------+-------------------+------------------+--------+--------+---------+
 
| ctime      | LEFT(ft.name,  20 ) | LEFT(c.name,  20 ) | prihod | rashod | ostatok |
+ ------------+-------------------+------------------+--------+--------+---------+
 
|  0000 - 00 - 00  | А- 95               | Транзит          |   20000  |   10000  |      200  |
+ ------------+-------------------+------------------+--------+--------+---------+
 
 1  row in set ( 0 . 00  sec)
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193935
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дык я HTML только в блокноте пишу
с разметкой все ОК

твой запрос

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
  ctime, ft.name, c.name, prihod, rashod, ostatok 
FROM fuel_usage_stats fu, fuel_types ft, cities c
WHERE
  ft.id = fu.fuel_types_id 
  AND
  c.id = fu.cities_id 
GROUP BY fu.fuel_types_id, fu.cities_id, ctime, ft.name, c.name 
ORDER BY ctime


ежели заменить в
Код: plaintext
1.
2.
SELECT 
  ctime, ft.name, c.name, prihod, rashod, ostatok 

на
Код: plaintext
1.
2.
SELECT 
  ctime, ft.id, c.name, prihod, rashod, ostatok 

все прекрасно выводиться, только в столбике 'ГСМ'
вместо марки бензина - его Id в цифровом виде, вот я и не пойму по чему
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193941
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что выдает?
Код: plaintext
1.
2.
SELECT * FROM fuel_types
ORDER BY id
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193945
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2mahoune

так действительно работает.

но почему не работало в моем варианте, и что за параметры ты применил
[srс]
SELECT
ctime, LEFT(ft.name, 20), LEFT(c.name, 20), prihod, rashod, ostatok
[/srс]
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193949
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2mahoune

Код: plaintext
1.
2.
SELECT * FROM fuel_types
ORDER BY id

Код: plaintext
1.
2.
3.
4.
5.
6.
 I Id I Name I
  ------------
 
 I  1  I  A- 95   I
 I  2  I  A- 92   I
....
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32193968
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин!
Дети и конфтеты.
В песочницу вас надо.

SELECT
ctime, ft.name , c.name , prihod, rashod, ostatok
FROM fuel_usage_stats fu, fuel_types ft, cities c
WHERE
ft.id = fu.fuel_types_id
AND
c.id = fu.cities_id
GROUP BY fu.fuel_types_id, fu.cities_id, ctime, ft.name, c.name
ORDER BY ctime


Этот запрос даст 2 одинаковых имени столбца.

Что мешает написать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
  ctime, ft.name AS ft_name, c.name AS c_name, prihod, rashod, ostatok 
FROM fuel_usage_stats fu, fuel_types ft, cities c
WHERE
  ft.id = fu.fuel_types_id 
  AND
  c.id = fu.cities_id 
GROUP BY fu.fuel_types_id, fu.cities_id, ctime, ft.name, c.name 
ORDER BY ctime
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32194021
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.

в выходные буду изучать Мускуль дома ...
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32198306
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне опять задачку поставили
Возможно или нет вытаскивать данные в сводную таблицу вида

[srс]
_______________________________________________________________________________________________________________________
Дата I Фирма I покуп I постав I кред I счет I кассса I дорога I магаз I вексел I База I гсм I кол-во I
-----------------------------------------------------------------------------------------------------------------------
2003-07-03 I Люкс I 110.00 I 210.00 I 310.00 I 410.00 I 510.00 I 610.00 I 710.00 I 100.00 I Антарес I А-95 I 400.000 I
-----------------------------------------------------------------------------------------------------------------------
I Антарес I А-92 I 500.000 I
-----------------------------------------------------------------------------------------------------------------------
2003-07-03 IАнтаресI 100.00 I 200.00 I 300.00 I 400.00 I 500.00 I 600.00 I 700.00 I 0.00 I Антарес I А-95 I 100.000 I
-----------------------------------------------------------------------------------------------------------------------
I Антарес I А-92 I 600.000 I
-----------------------------------------------------------------------------------------------------------------------
[/srс]

или все же выводить по отдельности

[srс]

CREATE DATABASE finans;

USE finans;

CREATE TABLE baza (
id int(4) NOT NULL auto_increment,
name varchar(30) NOT NULL default '0',
UNIQUE KEY id (id),
UNIQUE KEY name (name),
KEY name_2 (name)
) TYPE=MyISAM;

CREATE TABLE firma (
id int(4) NOT NULL auto_increment,
name varchar(30) NOT NULL default '0',
UNIQUE KEY id (id),
UNIQUE KEY name (name),
KEY name_2 (name)
) TYPE=MyISAM;

CREATE TABLE fuel (
id int(4) NOT NULL auto_increment,
name varchar(30) NOT NULL default '',
UNIQUE KEY name (name),
UNIQUE KEY id (id),
KEY name_2 (name)
) TYPE=MyISAM;

CREATE TABLE tabl (
id int(4) NOT NULL auto_increment,
ctime date NOT NULL default '2003-07-31',
firma_type int(4) NOT NULL default '0',
pokup char(20) NOT NULL default '0.00',
post char(20) NOT NULL default '0.00',
kredit char(20) NOT NULL default '0.00',
schet char(20) NOT NULL default '0.00',
kassa char(20) NOT NULL default '0.00',
doroga char(20) NOT NULL default '0.00',
mag char(20) NOT NULL default '0.00',
veksel char(20) NOT NULL default '0.00',
UNIQUE KEY id (id)
) TYPE=MyISAM;

CREATE TABLE `tabl_1` (
`id` int(4) NOT NULL auto_increment,
`ctime` date NOT NULL default '2003-06-31',
`firma_type` int(4) NOT NULL default '0',
`baza_type` int(4) NOT NULL default '0',
`fuel_type` int(4) NOT NULL default '0',
`kol_vo` double(20,3) NOT NULL default '0.000',
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM


INSERT INTO baza VALUES (1, 'Антарес');
INSERT INTO baza VALUES (2, 'Бологое');

INSERT INTO firma VALUES (1, 'АЭРО');
INSERT INTO firma VALUES (2, 'Люкс');

INSERT INTO fuel VALUES (1, 'А-95');
INSERT INTO fuel VALUES (2, 'А-92');

INSERT INTO tabl VALUES (1, '2003-07-03', 1, '100.00', '200.00', '300.00', '400.00', '500.00', '600.00', '700.00', '0.00');
INSERT INTO tabl VALUES (2, '2003-07-03', 2, '110.00', '210.00', '310.00', '410.00', '510.00', '610.00', '710.00', '100.00');

INSERT INTO tabl_1 VALUES (1, '2003-07-03', 1, 2, 1, '100.000');
INSERT INTO tabl_1 VALUES (2, '2003-07-03', 1, 2, 2, '600.000');
INSERT INTO tabl_1 VALUES (3, '2003-07-03', 2, 2, 1, '400.000');
INSERT INTO tabl_1 VALUES (4, '2003-07-03', 2, 2, 2, '500.000');

[/src]
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32198772
medved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по каккому полю тебя tabl и tabl_1 связаны.. я чего разглядеть не могу
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32198851
Alfa2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tabl и tabl_1 вообще не связаны
у них есть одинаковые поля ctime и firma_type, по ним нельзя осуществлять выборку?
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32198910
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл такой, что тебе надо использовать LEFT JOIN, и для записей итоговых писать пустые значения, используя IF, IS NULL и т.д.
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32198913
medved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ctime - плохой выбор конечно....
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32198916
medved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А LEFT JOIN здеся вряд ли нужен.
...
Рейтинг: 0 / 0
Снова вопрос к Гуру
    #32198922
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как?

Можно конечно при выводе раскидывать на подгруппы, но я так понял задачка была именно сразу такой вывод получить!
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Снова вопрос к Гуру
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]