Mireczki mamy tu jakiegoś szpeca od MS Access? Jestem zmuszony utrzymywać w pracy bazę, którą ktoś kiedyś zrobił i teraz przy każdej zmianie czegoś na serwerach odbija mi się to czkawką, bo wiecznie coś się w niej sypie... Krótko: Mam bazę MySQL utrzymywaną na serwerze. Na niektórych stacjach mam poinstalowane sterowniki ODBC do tej bazy MySQL. Użytkownik otwiera plik .mdb, ma tam utworzony interfejs do zmiany wartości w tabelach bazy, drukowania kopert
[ #mysql #sql ]

mirki, z sql zazwyczaj nie mam problemu, ale chyba utkąłem.

w tabeli są dwie kolumny: godzina [time] i liczba [int]. pytanie: jak pogrupować dane po godzinie do dwóch stref czasowych 00:00:00 - 11:00:00 i 12:00:00 - 23:00:00 żeby zliczyć sumę liczb w obu tych zakresach godzin? przyświeca mi idea z podzapytaniem w leftjoin do samej sobie, ale skomplikowanie rozwiązania znacznie przewyższa wartość "projektu" ;)
@tomix: Przy takim przyroście to bez różnicy - każde rozwiązanie będzie dobre - i union i case. Ewentualnie możesz zrobić triggera on insert, który będzie ustawiał z automatu strefę czasową - odpytanie takiego widoku będzie szybsze (o ułamki sekund - mając na uwadze liczbę danych) i przeniesiesz kod na tabele. Ale to bardziej sztuka dla sztuki.

BTW - zamiast rozpisywać drugiego whena w case, możesz zrobić else.
W projekcie przechowuję dużo małych obrazków (powiedzmy że ikon) tworzonych przez użytkowników. Jest ich nawet po kilkadziesiąt na usera, wymiary ok 100x60px, format png, zajmują po kilka-kilkanaście KB.

Na początku trzymałem je w plikach, ale żeby zmniejszyć liczbę requestów zapisuję je jako base64. Obecnie trzymam to wszystko w bazie (tzn zakodowane base64, nie pliki :)), ale obawiam się, że wraz ze wzrostem liczby uzytkowników baza może tego nie przeżyć, tym bardziej, że
baza może tego nie przeżyć, tym bardziej, że jest to #mysql


@paffnucy: Bueh ehe he heee.... Taki duzy a takie rzeczy wygaduje :)

Co byście radzili, w jaki sposób przechowywać takie dane?


@paffnucy: System plikow.

http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay

Eventualnie nosql db do samych obrazkow. Jesli zalezy Ci na predkosci i masz duzo ramu to mozesz korzystac z prostego cache z uzyciem ram dysku.
SELECT YEAR(data) AS RokSprzedazy, COUNT(fakturaID) AS IloscDokumentow FROM faktury GROUP BY RokSprzedazy HAVING RokSprzedazy BETWEEN 2006 AND 2008


@singollo: W Mysql tak - dlatego tez....

Note that MySQL, unfortunately, doesn't adhere to this standard, causing nothing but confusion. Don't fall for MySQL's tricks. GROUP BY transforms table references. You can thus only reference columns also referenced in the GROUP BY clause.

W oraclu takie zapytanie

select (salary + 1) as SAL
You can thus only reference columns also referenced in the GROUP BY clause.


@msq: To nie jest do końca prawdziwe, nie trzeba pakować wszystkich kolumn które wybierasz do GROUP BY, SELECT a1, a2, max(b1) from a JOIN b ON (....) GROUP BY a1 może być całkowicie poprawne nawet poza MySQL
@Onoki: hint: new. old.

@ to zmienna, do wartosci kolumn odwolujesz sie uzywajac new.nazwakolumny lub old.nazwakolumny

new. jest dostepne przy insertach i updaejtach (nowa wartosc kolumny)

old. jest dostepne przy updejtach i delete (stara wartosc kolumny.

w odpowiedniej linii zamien to co masz na

SET new.wartosc = new.wartosc * 0.9;
Siema mirki webdevujące pod windą (linuksiarzom się raczej nie przyda, chyba, że sobie poprzerabiają na basha)

Pewnie często korzystacie z konsoli windowsowej w przeróżnych celach. Mój kolega z pracy napisał kilka na prawdę niezłych i przyspieszających pracę skryptów do shella, ostatnio profesjonalnie to opisał i podzielił się z resztą firmy, a ja teraz dzielę się z Wami. od pewnego czasu sam z nich korzystam i na prawdę polecam.

Drodzy programiści i drogie
@Marmite: + wiele innych rzeczy. Przykładowo niech ktoś mi powie jak wygodnie zrobić

git bisect
w jakimś GUI? W IDE różnie wygląda sprawa z watcherami do testów. Bardzo często siedzę dużo w konsoli Railsowej. Pry Driven Development też jest znacznie prostsze w terminalu. Terminal z TMuxem można w 100% wygodnie obsłużyć bez użycia myszy, co jako osobie pracującej często w drodze bardzo pomaga. Narzędzia jak GHCi, Pry, bc, dc, find, Ag,
W sumie podpada to pod 3 tagi, więc sorry za spam, ale:

Jeśli w MySQL użyję: UPDATE tabela SET starenetto=netto, netto = 100, brutto = netto * 1,23;

to czy brutto mi się ustawi poprawnie na 123zł, a poprzednie netto zostanie zapamiętane?

W sensie, czy przypisania pól są GWARANTOWANE do wykonywania się od lewej do prawej i te wartości można wykorzystać dalej w jednym zapytaniu, czy wszystkie pola są wczytywane do pamięci
@aaadaaam: generalnie to działa. Na 5.0 i 5.5. Schematy testowe jak wyżej "ustaw netto, wykorzystaj kolumnę do brutto" niby chodzą. "Generalnie" i "niby". Jako jednak, że w dokumentacji jest o magiczne "z reguły", a jest to system finansowy, to chyba nie odważę się puścić tego na większą skalę :)
@RRybak: Będzie dzialało do czasu....

a jest to system finansowy


Ja bym forsował refaktoryzacji aplikacji.

To się robi. Systemy się zmieniają coś co miało być na rok, służy potem wiele lat i pojawia się problem jak tutaj z ceną.
Protip: Nie przenoś zadań z bazy danych na wyższy poziom, jeśli baza może je wykonać samodzielnie. A już w szczególności durnotą jest robienie SELECT / INSERT w dwóch krokach, skoro można użyć znakomitego INSERT INTO ... SELECT .. ON DUPLICATE KEY UPDATE...

#mysql #sql
@matiit: Ssie to kazdy baran ktory nie potrafi poprawnie zaprojektowac bazy albo optymalizowac zapytan. Nie ma takiej bazy czy infrastuktury ktorej nie mozna by bylo zajechac #!$%@? zapytaniem. Widizlaem duze bazy na mysql banglajace na mniej niz 10 serwerach z tysiacami uzytkownikow i praktycznie zerowymi problemami z wydajnoscia, widzialem tez Oracle rac z paroma nodami i poteznym SANem ktory puszczal banke nosem przy maskarycznej bazie i kilku rownoczesnych zapytaniach (bardzo zlych).
Mirki, pobieram sobie dane z pewnego serwera problem w tym że brak danych oznaczają znakiem '-' a ja dane zapisuję jako typ numeric, więc - jest zamieniany na 0 co psuje całkowicie koncepcję. Jest możliwośc zmiany w komendzie mysqlowej żeby ten myślnik wstawiał jako nic?

#programowanie #sql #mysql