#java #jdbc #sql #naukaprogramowania #bazydanych #sql
Mirasy, mam sobie szkielet takiego programu (screen poniżej) no i wypisałem sobie wszystkie pola z bazy danych do tabeli w JavaFx. Tylko bardzo zależało mi na rozdzieleniu roli gui i bazy danych. Dlatego mam jedną klasę która pobiera mi te sale i zapisuje mi je wszystkie do listy, a potem w gui pobieram to sobie metodą getRooms() i wypisuje do tabeli w gui. Działa to ładnie
Pobierz
źródło: comment_GfjhVvgxvRNwCyfCtvqixmtpFXpe7b2L.jpg
@Patres: Z tego co napisałeś to ogólnie wygląda ok.
Powinieneś mieć klasy:
Room - model danych
RoomDao - interfejs do komunikacji z bazą danych
RoomDaoImpl - implementacja interfejsu
SchoolController - wstrzyknięta tabela przez @FXML i wstrzyknięty lub po prostu utworzony obiekt DAO. W kontrolerze (jeśli korzystasz z interfejsu Initializable) to w metodzie initialize() pobierasz dane z bazy przez obiekt DAO zwracając np. w formie listy i wrzucasz je do tabeli przez
To co możesz zrobić ciekawego u siebie, to wykorzystać to, że w Javie8 i JavieFX masz do dyspozycji ObservableList, więc możesz podpiąć słuchacza, który po dodaniu rekordu do tabeli będzie automatycznie zapisywał go w bazie.


@Eoghan: Dokładnie tak robię. Dzięki wielkie!
Mirasy, taki temat, muszę się kogoś jeszcze doradzić oprócz ludzi z mojego otoczenia.

Otóż po krótce moja osoba: 24 lata, 2 lata programowałem (C#), zmieniłem branże na BI (MS, ale też troszkę Oracle) i od 1 roku pracuje jako BI Developer/Konsultant (jak zwał, tak zwał... ) w firmie w Polsce. Zarabiam na chwilę obecną 6k PLN na rękę na umowę o pracę i nie narzekam generalnie, a mam perspektywy na zarobki znacznie
Witam Mirki, mam pytanie #programowanie , #sql ,#mssql.
Chciałbym wyfiltrować dane z tabel tak, żeby otrzymać sumę ze sprzedaży z faktur dla listy kontrahentów zdefiniowanych w kluzuli where. I jeżeli jakiś kontrahent w miesiącu zdefiniowanym we where nie miałby żadnej faktury chciałbym aby zostało zwrócone 0. Obecnie zapytanie wygląda tak:
SELECT Kontrahenci.Kod, case when sum(SumaNetto)>0 then sum(SumaNetto) when sum(SumaNetto)=0 then '0' end FROM Kontrahenci left join Faktury ON Kontrahenci.ID=Faktury.Kontrahent Where Kontrahenci.Kod
@JaTuNaChwile: nie masz danych za jakiś miesiąc, to nie ma wiersza. Musisz sztucznie dodać. Jak zrobisz tabele z wierszami 1-12 i kartezjana (każdy z każdym), to już będziesz miał każdego kontrahenta 12 razy. Czyli wszystkie miesiące. Wtedy left z fakturami i suma z grupowaniem.
Elo Murki,

Pytanko takie... Jak zrobić sobie w excelu bazę / tabelę odległości między kodami pocztowymi?
Albo czy jest gdzieś tabela (albo jak ją zrobić) ze współrzędnymi kodów pocztowych co by można sobie z twierdzenia Pitagorasa nawet wyciągnąć odległość po prostej?

Z góry dziękuję / Thank you from the mountain

#pytanie #excel #bazydanych i w sumie też #sql #gus
Mirki, dziś na potrzeby nowej pracy podszkoliłem się na własną rękę z #sql i baz danych (pierwsza moja styczność w tych tematach). Robiąc pewne przykłady, napotkałem na problem. Dla Was to pewnie pestka, więc liczę na pomoc. Otóż musiałem zrobić listę nazw ulic przynajmniej częściowo dwujezdniowych. Problem w tym, że ulice są podzielone na odcinki, i niektóre z nich są tylko dwujezdniowe, np. ul. X ma 5 odcinków, z czego 2 dwujezdniowe.
#sql #naukaprogramowania
Mirki mam dwie tabele: teacher i subject. Oraz trzecią która łączy mi nauczycieli z przedmiotami: subjecthasteacher. Insertem połączyłem sobie każdego nauczyciela z każdym przedmiotem który uczy. Teraz chcę sobie wypisać te dane tzn. name i lastname z tabeli teacher oraz name z tabeli subject. Tak, żebym miał np. "Anna Nowak Matematyka". Zrobiłem takiego SELECTa:

SELECT
teacher.first_name,
teacher.last_name,
subject.name
FROM
teacher,
subject,
subject_has_teacher
WHERE
teacher.id = subject_has_teacher.teacher_id AND
@Patres: Jest ok :) Możesz też użyć jawnie JOINów i zamiast podawać kilka tabel po FROM połączyć je po klauzuli JOIN (wynik oczywiście ten sam, czytelność kodu trochę lepsza z jawnym JOINem)

edit:

do tego polecam stosować aliasy na tabelach, żeby nie robić takich tasiemców
teacher.id = subjecthasteacher.teacherid
#sql #naukaprogramowania
Mirki czytałem, żeby id w tablicach były typu int. Ale jak np. teraz sobie tworzę bazy danych szkoły i mam tablice przedmiot oraz nauczyciel, które są w relacji n:n to chyba łatwiej by mi było stworzyć id typy varchar i dawać je do wspólnej tabeli:
insert into nauczyciel-przedmiot values(KOWALSKA, MATM); zamiast z intami:
insert into nauczyciel-przedmiot values(12, 3);
Czy w takiej sytuacji lepiej używać id typu varchar czy zostać przy
@Patres: Klucz główny tabeli powinien:
- być niezmienny
- być unikalny
Nie posiadasz kluczy naturalnych w tabeli które spełniają te warunki, użyj klucza sztucznego.

@M4ks Takie sytuacje są bardzo rzadkie i o ile można wspomieć o takiej możliwości lepiej dla wszystkich będzie jeśli osoby bez zaawansowanej wiedzy będą trzymały się integerów (tinyint, bigint, int, serial i inne).
@plushy: ja po prostu nie lubię stwierdzeń typu "PK tylko integer", bo to i nieprawda i bezsens. Czasem przydają sie np klucze złożone etc. Nie warto po prostu rzucać definitywnych stwierdzeń, bo jeszcze komuś zostanie i będzie kiepsko
Mireczki z #sql pomóżcie :(

Mam 3 tabele: locations, locationviews oraz locationratings. Chcę pobrać nazwę z locations, policzyć rekordy w locationviews(do 1 rekordu w locations może być wiele w locationviews) oraz średnią ocenę z tabeli locationratings(też jeden do wielu). Testowo mam 2 rekordy w locationviews a w rezultacie COUNT zwraca, że są 4 :/
Co robię nie tak?

SELECT locations.name, COUNT(locationviews.id), AVG(locationratings.rate)
FROM locations
Nie wiem dlaczego wywala mi blad

Syntax error (missing operator) in quiery expression 'b.amount from aapostepay b join a on a.annotazione = b.transactionid'


UPDATE registrazionecogedettaglio a
SET a.importo = b.amount
FROM aapostepay b
JOIN
a ON a.annotazione = b.transactionid
WHERE a.annotazione = b.transactionid
AND a.conto = '250050'

#sql #access #bazydanych
Mirki pomóżcie bo tracę już wiarę, że to zadziała...
Mam 2 tabele, chcę połączyć dane by w rezultacie wypisać treść komentarza z 1 tabeli i ocenę z 2 tabeli łącząc je po userid. Warunkiem jest idlokacji do której wyświetlane są rekordy.

Mam takie zapytanie:
SELECT * FROM locationcomments JOIN locationratings ON locationratings.userid = locationcomments.authorid WHERE locationcomments.locationid = 3 ORDER BY location_comments.date DESC
Pobierz
źródło: comment_Cr2pmqqvwY0YR4pcPg4F3brvV99tYaBW.jpg
Mam plik .MDB ale nie mam Accessa.

Chce usunac ok 20tys wierszy z tego pliku, moge to jakos zaimportowac do SQL Express albo otworzyc przez Excela? Probowalem przez import danych z innego zrodla> Access, ale mam do wyboru milion tabel wiec nie bardzo idzie, poza tym musze to potem spowrotem zapisac w formie .MDB zeby program do ksiegowosci z ktorego korzystam mogl go wczytac.

Problem jest taki, ze w programie do ksiegowosci
@entaroadun: powinno dać radę spokojnie z Excela ja w vba pisałem macra które otwierały plik z bazą i robiły na niej różne Select.

Możesz zrobić coś w stylu:

dim objAccess As Object
set objAccess = GetObject("c:\plik.mdb")
objAccess.DoCmd.OpenQuery "TwojeQryWAccesie"
objAccess.Auto

googluj use ADO to execute sql jeśli chcesz odpalić qry którego nie ma w bazie
#naukaprogramowania #sql #plsql #oracle
Witajcie SQL-owi przyjaciele, mam zadanie do rozwiązania i nie wiem gdzie popełniłem błąd.
Zadanie:

Wypisz imiona, nazwiska i stopnie naukowe wszystkich dydaktyków. Uwzględnij dydaktyków, którzy nie mają stopnia.


moje rozwiązanie:

select o.imie, o.nazwisko, st.stopien from osoba o join dydaktyk d on o.idosoba=d.idosoba
join stopnietytuly st on d.idstopien=st.idstopien where d.idstopien is null and d.idstopien is not null

i wyskakuje mi:

no rows selected
próbowałem dać po wherze:
nvl(d.idstopien,'brak') -
Cześć Mirko #programowanie #sql #debian #linux. Mam postawioną baze w postgresql, i skrypty które odpalają się cyklicznie i wrzucają do bazy jakieś tam dane (troche ważne). Problem w tym, że po niecałych ~~12h działania skryptów muszę restartować baze, bo zapytania wykonują się strasznie długo (właściwie wcale sie nie wykonują). Po restarcie service`u wszystko jest super ok, ale jakoś nie widzi mi się restartowanie bazy co chwila, bo wpłynie to na moje
@Ginden: Jakby ktoś był zainteresowany co to było:
sprawdzałem czy stronka odpowiada pobierając jej zawartość GETem, ale nie miałem timeoutu. Cron odpalał kolejne skrypty i rura sie zapychała. Ustawienie timeoutu stronki załatwiło problem. ( ͡° ͜ʖ ͡°)
Jak chcę w #sqlite żeby mi automatycznie razem z danymi wstawiało indeks (primary key, automatycznie inkrementowany) to muszę w pole id wstawiać NULL (z tego co zrozumiałem), czyli np.

insert into jakasTabela (id, kolumna1) values (NULL,123)
Jak wstawić do takiej tabeli wynik zapytania i jednocześnie tego nulla dla id, żeby się automatycznie indeks robił? czyli coś w stylu
insert into jakasTabela (id, kolumna1, kolumna2) select from ....... ale id wszędzie NULL.
#
@psi-nos: A nie wystarczy

INSERT INTO jakasTabela (kolumna1) values (123)
żeby zadziałał inkrement? :P A jeśli już musisz robić to co chcesz to:

INSERT INTO jakasTABELA (id, kolumna1, kolumna2)
SELECT NULL AS "id", kolumna1, kolumna2 FROM ... ;