Heeeeeeeeeeeeeeelp!!!!!

14 отговора 593 прегледа
#1

Heeeeeeeeeeeeeeelp!!!!!

Triabva da napravia baza danni za dvijenie na artikulite w edin sklad .
Trqbwa da mogat da se poluchavat prihodi da se izpisvat razhodi ida se pravi proverka za nali`nosti
Niakoi da dade niakava ideia za strukturata na bazata danni?

Отговор
в отговор на Ben Laden #2

Re: Heeeeeeeeeeeeeeelp!!!!!

Божеееееееееееее.Тва е може би най-трудната част в системата. И ако няко ти даде решение с един отговор ще скоча от прозореца.

Отговор
в отговор на KrasiG #3

Re: Heeeeeeeeeeeeeeelp!!!!!

Az shte skocha ot prozoreca ako nqkoj vaobshte uspee da mu dade dobro reshenie imajki predvid "podrobnoto" mu opisanie na problema ;)

Отговор
в отговор на Milenishte #4

Re: Heeeeeeeeeeeeeeelp!!!!!

Наистина "много" добре е формулирана задачата.
Тва е началнически стил на работа.
Имах шеф дето буквално формулираше заданието по следния начин:
"Искам да ми направиш такова едно нещо, че като се натисне нещо да се случи нещо."
Тва е истина.Мноо дивно беше.

Отговор
в отговор на KrasiG #5

:)

kwo mu e na zadanieto :) , ako nqkoi e pluchil po dobro zadanie za skladowa programa znachi q e pisal za nakoi zapadqk (makar che te mai ne si prychwan takiwa programi)

table Dwijenie - Art, tipDwijenie, OtSklad, wSklad, Kol
table Nalichnost - Sklad, Art, Kol
table Tran - ID, IDDwijenie, Art, Sklad, Znak(+-), Kol

table tipSklad, Sklad

Dwijenie :
1. tip Dostawka OtSklad = dostawchik, wSklad = Sklad
2. tip Prodajba ili drugo izpiswane izwyn skladowete OtSklad = Sklad, wSklad = Client
3. tip Premestwane OtSklad = sklad1, wSklad = Sklad2
*kato pri promqna na zapis se prawi syotwetnata w Tran i se update-wa

Nalichnost
tipSklad : wkluchwa wsichki dostawchici, clienti i wyreshni skladowe razdeleni po tipowe

Отговор
в отговор на zip #6

Абе то хубаво ама ....

Пък аз освен склад имах и
Комплектност Във Склада
Та ми се наложи да измисля, някои доста хитри неща.

Щото продукт A се състои от N части A1, A2 ... AN
И на всичкото от горе частите не са заменяеми.
Та справката по Части и бройки
1 - 20
2 - 30
3 - 5
4 - 10

Не дава 5 пълни комплекта ами примерно
3 пълни (1,2,3,4,5)
10 (1,2,4)
3 (2,3)

И така нататък ...

Е наложи се SQL висш пилотаж

мразя складове и фактури и подобни

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #7

Re: Примерче - задачка :) MySQL естествено

Това е опсостен вариант на задачата за движение.
sid - е id на "Склад" да кажем
pid - е id на Част
Под "комплект" се разбира: Комбинация от 5 части pid = (1,2,3,4,5) като могат да се комбинирт произволно. примерно Всяка дръжка - става на всяка кутия

mysql> select * from c;
+------+------+------+
| sid | pid | qty |
+------+------+------+
| 1 | 1 | 185 |
| 1 | 2 | 13 |
| 1 | 3 | 509 |
| 1 | 4 | 504 |
| 1 | 5 | 992 |
| 2 | 5 | 451 |
| 3 | 1 | 278 |
| 3 | 3 | 35 |
| 4 | 3 | 344 |
| 4 | 1 | 614 |
| 4 | 2 | 39 |
| 4 | 5 | 354 |
| 4 | 4 | 98 |
+------+------+------+

mysql> SELECT ...; - Един само

+------+-------------+------+------+------+------+------+--------------+
| sid | total_parts | p1 | p2 | p3 | p4 | p5 | msg |
+------+-------------+------+------+------+------+------+--------------+
| 1 | 2203 | 185 | 13 | 509 | 504 | 992 | 13 Complects |
| 2 | 451 | 0 | 0 | 0 | 0 | 451 | |
| 3 | 313 | 278 | 0 | 35 | 0 | 0 | |
| 4 | 1449 | 614 | 39 | 344 | 98 | 354 | 39 Complects |
+------+-------------+------+------+------+------+------+--------------+
4 rows in set (0.00 sec)


Ха да видим, кой ще го напише този SELECT

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #8

Re: Примерче - задачка :) MySQL естествено

Принципно много мразя задачки от тоя род ама сега нещо се замислих.Та не ми е ясно каква е целта.Обясни ми какво означава примерно първия ред от резултата.От р1 до р5 са различните части и тва е едната възможна комбинация ама тва последното че има 13 комплекта какво е като не се знае по колко имаме от всяка част????

Отговор
в отговор на KrasiG #9

Re: Примерче само :(

Това със задачката не беше добра идея.

Както казах комплекта може да се "събере" от произволни части.
Представи си
p1 - Кутия
p2 - Капак
p3 - Дръжка

"Комплект" = коя да е кутия с коя да е дръжка с кой да е капак

Значи в случая ред едно ще рече:
В склад едно може да сглобим 13 комплекта
А надолу - в 2 и 3 нито един, в 4 - 39

Linux is like a wigwam - No Windows, No Gates, Apache inside

Редактирано от salle на

Отговор
в отговор на salle #10

Re: Примерче само :(

Хубаво.Ама не е ли достатъчно тогава да намериш min от р1,р2,р3 , което всъщност ти дава броя на комплектите които можеш да зглобиш?

Тука някаква уловка ли има не мога да схвана.

Отговор
в отговор на KrasiG #11

Re: Примерче само :(

Достатъчно е.
Никаква уловка няма точно min() използвам. Просто за да изглежда по-красиво съм махнал 0 от последната колона. А точно такива изисквания в заданието тровят най-много живота на нашего брата.
И най-често (понеже вече са те вбесили) сядаш и набързо го филтрираш в клиентската част. Ама в SQL-а е и по-елегантно и по ефикасно.

В случая неприятното е, че фигурира числото 5. т.е. предварително трябва да знаеш колко са възможните части. Забележи възможните а не съществуващите. т.е. sub-select не ти върши работа.

Веселото става когато усложниш този вариант и дефинираш
Комлект като "Комплект от части с еднакъв сериен номер"

Тогава в един момент ми просветна да използвам pid - номера на частта вдигнат на степен 2 и bit-mask и ... стана

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #12

Re: Примерче само :(

Леле мале.Голяма акробатика си напраил.Браос.
Тва с битовата маска напро ми изпрати шапката на луната.Мноо елегантно ама не сам сигурен колко от DB-тата имат побитови операции и за жалост не е много универсално.Ама като идея напрове ме побърка.

Отговор
в отговор на KrasiG #13

Re: Примерче само :(

Е MySQL ги има

И таман си написах комбинация от функции за да броя колко бита са вдигнати и открих, че има и такава функция
BIT_COUNT(N)


Старая се да свърша максималн част от задачката още в SQL

Преди време трябваше да размножим един и същи ред в стил
user1, нещо .....
в редове
user1 ... userN с едно и също в другите колони ... а да имаше още една която съдържаше 1...N

Та човека до мен напираше да напише еднf shell или perl скриптче ама с нарастващо удивление ме изгледа как свърших работата без да излизам от промпта на
mysql>
Всъщност за всеки ред от тази таблица се INSERT-ваха по M в друга

Което ще рече, че съм се смахнал окончателно с тоя SQL. Снощи ме попитаха още колко време ще съм online и аз преди да се усетя написах

mysql> select sec_to_time(unix_timestamp(date_format(curdate() + interval 1 day, '%Y-%m-%d 02:00:00')) - unix_timestamp());

После опитах да преброя часовете - на пръсти - сбърках веднъж и получих същото число ама по-трудно

А това вече си безумие

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #14

ne e li mnogo slojno s bit-owi operacii

K-opisanie na komlektite
kid pid qty
1 1 1
1 2 2
1 3 1
2 4 3
2 5 1
N - nalichnost
sid pid qty
1 1 100
1 2 100
1 3 100
1 4 100
1 5 100
2 1 50
2 2 50
2 3 50
2 4 50
2 5 70

select N.sid,K.kid, brKoml Min(N.qty/K.Qty)
from K, N
where K.pid = N.pid
group by N.sid,K.kid

ako razbira se wsichki komlekti se prawqt ot razlichni chasti :)
spored tebe kak trqbwa da se fix-ne ako se powtarqt (i ako mislish che che twa dato sym go napisal raboti :) )

Отговор
в отговор на zip #15

P.S.

wsyshnost, ako ima powtarqshti se chasti mai za wsqka chast trqbwa da se okazwa w koi kamlekt shte uchastwa

Отговор