powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как правильно составить запрос?
5 сообщений из 5, страница 1 из 1
Как правильно составить запрос?
    #32855157
paul999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, я допускаю, что не оригинален, но мне нужна помощь в составлении запроса. Есть база данных для склада. В разных таблицах хранятся данные по получателям, материалам, объектам и т.п. И есть таблица, фиксирующая факт выдачи со ссылками на все эти таблицы. Проблема в том, что там каждый факт выдачи фиксируется отдельной строкой. Значит если монтажник берет на объект 3 раза один и тот же материал, то будет три разных записи о выдаче.
структура таблицы выдачи такая:
IDS|MontID|ObjID|MatID|Number|Rashod
IDS - индекс записи
***ID - ссылка на другую таблицу, типа кто куда и чего взял
Number - сколько материалов выдано
Rashod - поле типа enum, признак типа выдано со склада/вернулось обратно
Вопрос такой: мне надо сделать выборку сколько материалов ушло на конретный объект. Т.е. выбрать все что выданы, минусовать все что вернулись обратно, при этом если какая-то позиция материала повторяется, то их надо суммировать по количеству и отображать одной строкой. Может я конечно несколько путано излагаю суть вопроса... Мне интересно, можно ли это сделать в принципе?
...
Рейтинг: 0 / 0
Как правильно составить запрос?
    #32855174
Фотография hell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структуру не очень понял, вот отвлеченный пример: материал - поле однозначно
определяющее тип материала, количество - так и есть, расход - "0" выдано, "1" -
возвращено, конструкция (количество-2*расход*количество) равна положительному
числу количетсва при расход=0 и отрицательному при расход =1. Итак.


select материал, sum(количество-2*расход*количество) from выдачи group by материал



"Прежде чем убить человека, узнай, нет ли у него влиятельных родственников" (с) Библия
...
Рейтинг: 0 / 0
Как правильно составить запрос?
    #32855901
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен с решением, не согласен со структурой данных.
Для таких случаев, как выдача-получение,
существует старая добрая двойная запись (дебет/кредит)

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
Как правильно составить запрос?
    #32856079
paul999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Громадное спасибо, действительно очень просто, 2 дня бился головой о стенку. Конкретно в моем случае пришлось сделать чуть сложнее
SUM(if(Vidacha.Rashod='rashod',Vidacha.Number,-1*Vidacha.Number)), т.е. ваш вариант но в более общей и менее изящной форме. И если можно вопрос к Marat_L, я человек в этой области довольно новый, не могли бы вы объеснить вашу мысль насчет струтуры базы данных для моего случая? Может есть какие-то популярные ресурсы где это рассказывается? Азы языка и управления базами данных я выучил, но где можно научится составлять правильные структуры баз данных?
...
Рейтинг: 0 / 0
Как правильно составить запрос?
    #32857144
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что касается книжек и ссылок -
лучше сходи-почитай на форум "Проектирование баз данных"
Для начала должно хватить.

Что касается моей мысли - то всё очень просто

Структура таблицы(примерная)
дата, объект(что выдали), дебет (кому выдали),кредит(кто выдал), количество
В такой постановке объект выдающий и получающий равноправны,
и сделав запрос по учету у одного объекта
ты увидишь что запрос будет работать и для другого.

Хотя это не догма

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как правильно составить запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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