Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! Сижу и туплю как написать запрос, чтобы выводил в таблицу и отсутствующие позиции Т.е есть определенная номенклатура товара, но она не всегда в наличии. труба 630 стенка 8 труба 630 стенка 9 труба 630 стенка 10 труба 630 стенка 11 труба 630 стенка 12 Если в базе есть только некоторые позиции, то соответственно запрос выведет только их. Диаметр стенка длина Характеристика Цена630 9.00 139.73 п/ш 40000630 10.00 22.57 п/ш 39000 Можно, конечно создать записи с нолями, но не хочется захламлять бд а хотелось бы видеть таблицу что то типа такой Диаметр стенка длина Характеристика Цена630 8.00 под заказ н/д запрос цены630 9.00 139.73 п/ш 40000630 10.00 22.57 п/ш 39000630 11.00 под заказ н/д запрос цены630 12.00 под заказ н/д запрос цены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 10:42 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
mdm114 Можно, конечно создать записи с нолями, но не хочется захламлять бд Конечно, нужно отдельно иметь справочник товаров, а отдельно - связанную с ним таблицу наличия товаров на складе. Или поля количества, в которых будут "нули" (но тогда не получится сделать несколько складов, что достаточно обыденная вещь) Тогда программирование будет лёгким и приятным, а база - прозрачной и понятной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 10:55 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
Очевидно, у вас есть таблица с ассортиментом и таблица с остатками, возможно таблица с ценами. Left Join вам в руки. А без описания структуры БД советовать нечего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 10:57 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
982183 Очевидно, у вас есть таблица с ассортиментом и таблица с остатками, возможно таблица с ценами. Есть предполагаемые товары - трубы, с диаметром "от" и "до", и с каким то шагом, и таблица остатков, притом если остаток 0, то запись удаляется. Идентификаторов товара тоже нет, если что :-) По моему, так даже курсовик делать трудно, с таким подходом, а о реальной системе я вообще молчу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 11:20 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы, структура примерно такая: На каждый товар заводится карточка с описанием. Диаметр, стенка, состояние, объект, цены и проч. Соответственно это таблица с описанием. Есть связанная таблица(наличие товара), которая описывает длину, тоннаж, характеристики и качество каждой позиции в отдельности. При продаже всех позиций данной карточки товара, она помечается как проданная и уходит в архив. Соответственно товары из второй таблицы(склад) перемещаются в таблицу продажи. Привязывать товары к одной и той же карточке не получится. Я уже думал в эту сторону,но специфика такова, что всегда приходится на каждую новую партию заводить новую карточку. В сторону left joint думал, но пока не совсем получается то, что надо. Некоторые редкие позиции типа 630х12 вообще никогда не были в наличии... А в результатах запроса хотелось бы видеть и их Мне вот тут давали советы по выборкам с учетом отсутствия данных за определенный месяц. Я думал, что можно тоже какой то сет сделать с номенклатурой товара и исходя из нее, привязаться к наличию той или иной позиции. Но никак не додумаю как это сделать, да и реально ли это Код: css 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 11:43 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
А товар однотипный? Трубы разного диаметра и разными стенками всё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 11:50 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
alexeyvg По моему, так даже курсовик делать трудно, с таким подходом, а о реальной системе я вообще молчу. Вчера только с соседнего офиса люди за помощью пришли. У них на 1С 6,0 !!!!!!! склад написан. На ключе контакты окислились - ПО не запускалось.... 15 лет работали без сопровождения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 11:53 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
mdm114 Спасибо за ответы, структура примерно такая: На каждый товар заводится карточка с описанием. Диаметр, стенка, состояние, объект, цены и проч. Соответственно это таблица с описанием. Есть связанная таблица(наличие товара), которая описывает длину, тоннаж, характеристики и качество каждой позиции в отдельности. При продаже всех позиций данной карточки товара, она помечается как проданная и уходит в архив. Соответственно товары из второй таблицы(склад) перемещаются в таблицу продажи. Привязывать товары к одной и той же карточке не получится. Я уже думал в эту сторону,но специфика такова, что всегда приходится на каждую новую партию заводить новую карточку. В сторону left joint думал, но пока не совсем получается то, что надо. Некоторые редкие позиции типа 630х12 вообще никогда не были в наличии... А в результатах запроса хотелось бы видеть и их Как я понял, ваша карточка товара - это поставка. То есть, если есть труба 630х9, то будет несколько карточек, на каждую поставку, правильно? Так и надо сделать справочник номенклатуры, там будет одна запись для 630х9 Далее делаются записи в таблицу поставок (по мере совершения таковых), там будет мнонго записей, ссылающихся на эту 630х9 А потом уже делать движения по складам, и остатки по складам. И запрос будет очень простой, с двумя лефт-джойнами: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 12:04 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
Немного не так 1 таблица, немного упрощенно id Диаметр стенка характеристикипоставщик ВладелецЦена Вх.цена итд2236309.00п/ш Оренбургреализация250002300022463010.00п/ш ВоронежСтальсобственная2500023000 2 таблица длина состояние пр. пометкирезерв№ карточки11.65 лежалая--нет22311.64 лежалая--нет22311.63 лежалая--нет22311.62 лежалая--нет22411.61 лежалая--нет22411.60 лежалая--нет224 В запросе соответственно суммируются данные по каждой карточке и выводится только общий метраж и тоннаж 982183 А товар однотипный? Трубы разного диаметра и разными стенками всё? Да, однотипный. Только вот эти позиции труба 630 стенка 8 труба 630 стенка 9 труба 630 стенка 10 труба 630 стенка 11 труба 630 стенка 12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 14:38 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
alexeyvg Так и надо сделать справочник номенклатуры, там будет одна запись для 630х9 Далее делаются записи в таблицу поставок (по мере совершения таковых), там будет мнонго записей, ссылающихся на эту 630х9 А потом уже делать движения по складам, и остатки по складам. [/src] При продаже карточка закрывается, так как следующая поставка аналогичного товара(630х9) может быть с другими характеристиками, начиная от поставщика и заканчивая ценами, поэтому нет смысла привязываться только к одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 14:43 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
mdm114 Немного не так Вашу "1 таблица" я назвал "таблица поставок". Может, это не очень точно. Можно назвать её "таблица товаров", или "Номенклатура", и сделать ещё таблицу "Типоразмеры" Тогда получится так (если, например, труба 630,10.00 пришла от 2х разных поставщиков): 1 таблица ("Типоразмеры") id Диаметр стенка характеристики126309.00п/ш1363010.00п/ш 2 таблица ("Номенклатура", то есть конкретный товар конкретного поставщика) id id Типоразмеры поставщик ВладелецЦена Вх.цена итд22312Оренбургреализация250002300022413ВоронежСтальсобственная250002300022513Оренбургсобственная2500023000 3 таблица (остатки на складе) длина состояние пр. пометкирезерв№ карточки11.65 лежалая--нет22311.64 лежалая--нет22311.63 лежалая--нет22311.62 лежалая--нет22411.61 лежалая--нет22411.60 лежалая--нет22411.61 лежалая--нет22511.60 лежалая--нет225 mdm114 При продаже карточка закрывается, так как следующая поставка аналогичного товара(630х9) может быть с другими характеристиками, начиная от поставщика и заканчивая ценами, поэтому нет смысла привязываться только к одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 14:55 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
спасибо, тоже уже думаю в сторону третьей таблицы с типоразмерами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 15:11 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
домучил все таки вот такой вариант. Еще, правда немного корявый. Надо будет немного доработать и додумать какие значения убрать, а так вроде все правильно выводит Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. i Diam ST DiamDb StDb Длина Цена1 630 8 0 0.00 0.0000 02 630 9 630 9.00 139.7300 400002 630 9 630 9.00 1120.7600 420003 630 10 630 10.00 22.5700 390004 630 11 0 0.00 0.0000 05 630 12 0 0.00 0.0000 0 Может подскажет кто, возможно ли изменить конструкцию Код: sql 1. чтобы в результате вывода был не 0, а "под заказ" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 16:07 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
Ну сколько раз тут обсуждали уже структуру данных складского учета. А извращение начинаются при вот таких нестандартных ситуациях. Если всего пять номенклатурных позиций, то это не повод отказываться от самой этой сущности. Даже если дополнительные характеристики порождают некое подобие новых номенклатурных позиций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 16:10 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
mdm114, coalesce( cast(c.price as nvarchar(50)),'под зак') Цена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 16:11 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
StarikNavy, спасибо 982183,позиций на самом деле немного больше. Просто привел для примера 5. А с таблицей "Типоразмеры" я еще попробую. Просто у меня что то с запросом на три таблицы не очень получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 16:25 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
Ну так забудь про свои велосипеды. Посмотри на "стандартные" методы реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 16:29 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
mdm114 А с таблицей "Типоразмеры" я еще попробую. Просто у меня что то с запросом на три таблицы не очень получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 16:53 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
alexeyvg, не получилось, потому что не захотелось добавлять в существующую таблицу новую колонку с ключем "id Типоразмеры". Пробовал использовать диаметр и стенку как ключи. А так согласен, что правильнее использовать три таблицы. Но дело в том, что эта таблица больше нигде не нужна будет. Хочу сделать вывод этой таблицы в виде блока на web страницу, чтобы данные не редактировать вручную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 09:16 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
mdm114 потому что не захотелось добавлять в существующую таблицу новую колонку с ключем "id Типоразмеры". Пробовал использовать диаметр и стенку как ключи Но лучше всё таки сделать нормальный целочисленный identity integer id, и добавить его в существующую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 10:25 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
Карточка товара, говорите. Надо же думать в терминах баз данных, структур и алгоритмов когда пишите базу данных со структурой данных и алгоритмами обращения с данными, а не бездумно копировать бумажные физические сущности. Посмотрите как люди делают склады и подумайте почему именно так, а не как у вас "без справочников". Не бывает такой "специфики" когда справочник не нужен. Это в реальном мире не работает. У вас ваши же поставщики или покупатели покупают по закрытому списку позиций, который и должен быть отражен в базе. Единственное исключение я могу придумать, если вы бутик труб и продаете эксклюзивные трубы по требованиям заказчика типа "два метра диаметром 60 мм со стенкой 5 мм, потом увеличение диаметра на 10 мм на длину 10 см и ещё два метра трубы спиралью диаметром 5 мм и стенкой 1 мм и все это с одной стороны из меди, а с другой из стали". А вообще почитайте про архитектуру данных, про переиспользование данных, про нормальные формы и их суть, иначе такие простые задачи как получить список проданных позиций с их суммарным весом или количеством, будут вас ставить в тупик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 07:34 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
В вашем случае справочник это пересечение двух простейших таблиц: одной со всеми возможными диаметрами и другой со всеми толщинами. Места занимает мизер, будет лежать скорее всего в памяти, заодно можно использовать как ограничитель/список скачков пресетов, что бы пользователи не пихали нереальные опции типа диаметр 10 мм со стенкой 9 мм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 07:43 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
PizzaPizza В вашем случае справочник это пересечение двух простейших таблиц: одной со всеми возможными диаметрами и другой со всеми толщинами. Места занимает мизер, будет лежать скорее всего в памяти, заодно можно использовать как ограничитель/список скачков пресетов, что бы пользователи не пихали нереальные опции типа диаметр 10 мм со стенкой 9 мм. Потому что нет бизнес сущности "диаметр" или "толщина", есть выпускаемые трубной индустрией размеры ("стандартизованные", или "принятые в отрасли"). Из чего следует, что реальная линейка размеров труб не будет в точности соответствовать произведению множеств "диаметр" и "толщина". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 08:58 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
PizzaPizza Карточка товара, говорите... Это я так для простоты выразился, чтобы понятнее было PizzaPizza У вас ваши же поставщики или покупатели покупают по закрытому списку позиций, который и должен быть отражен в базе.... ....Единственное исключение я могу придумать, если вы бутик труб и продаете эксклюзивные трубы по требованиям заказчика... Не совсем так, но очень похоже. Торговля идет не новым а переработанным сырьем. Приведу пример той спецификации, о которой Вы говорите Диаметрстенка ГОСТсталь цена630720295 17Г1С4000630820295 17Г1С4000630920295 17Г1С40006301020295 17Г1С4000720820295 17Г1С4000720920295 17Г1С40007201020295 17Г1С40007201220295 17Г1С4000 Тут все просто в моем случае выглядит примерно так Диаметрстенкасостояние фаскипоперечный шов среда использования цена6307бу нетесть вода 200006307восстановленная данет газ 390006307восстановленная даестьгаз 400006307восстановленная даестьнефть 240006307.5восстановленная даестьнефть 240006307.5лежалая данет -- 340006308лежалая данет-- 440006308лежалая данет-- 440006309собственное производство данет-- 4400063010собственное производство данет-- 44000 Смысла нет подключать номенклатурный справочник в том виде, про который вы говорите или делать свой. Поэтому есть отдельная таблица со спецификацией каждой партии товара(или как я выразился словом, которое всех коробит "карточка") Может со стороны и немного заморочено выглядит, но на практике все работает в лучшем виде. Причем, что больше всего нравится - это отчетность по каждой партии товара. Можно смотреть какой товар и какого состояния быстрее продается, а какой задерживаются на складе. И, характеристики в виде стенок и диметра здесь не основные. Как уже писал выше, тот запрос мне нужен лишь для одной цели - обобщенного вывода лишь нескольких позиций на сайт. Например из вышеуказанной таблицы нужно вытащить только две записи "собственное производство", а вместо остальных поставить "нет в наличии". Пример таблицы был выше. В принципе я уже понял в какую сторону двигаться, Сейчас разбираюсь с ключами, чтобы не добавлять в существующую таблицу лишнюю колонку.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 09:39 |
|
||
|
Вывод отсутствующих позиций в таблицу
|
|||
|---|---|---|---|
|
#18+
mdm114 Смысла нет подключать номенклатурный справочник в том виде, про который вы говорите или делать свой. ... Как уже писал выше, тот запрос мне нужен лишь для одной цели - обобщенного вывода лишь нескольких позиций на сайт. Речь о том, что модель данных в БД должна отражать вашу бизнес-модель, модель тех сущностей, которыми оперирует ваш бизнес (сотрудники). Если вы говорите, что у вас есть некие "размеры", которые определённым образом понимаются сотрудниками, и используются в бизнесе компании, если вы хотите, что бы пользователь видел эти "размеры" в интерфейсе (не партии, а именно линейку размеров, к которой уже подцепляются партии, или поставки, или реальные размеры каких то заводов), то, значит, должна быть такая таблица. Не придуманная "таблица полной номенклатуры", а таблица, которое отражает реально используемые в бизнесе сущности, является физической реализацией (в БД) этой сущности. Вот, как то так. А вы занимаетесь какой то ерундой, не работой с моделью данных, с бизнес моделью, а подсчётом количества колонок в таблице :-) Да хоть 100 колонок можно добавить, сервер выдержит! mdm114 Сейчас разбираюсь с ключами, чтобы не добавлять в существующую таблицу лишнюю колонку.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 09:59 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39885842&tid=1686993]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 504ms |

| 0 / 0 |
