Article View: pl.comp.lang.java
Article #153986Re: Dodawanie WHERE do dowolnego zapytania SQL
From: J-23
Date: Mon, 10 Feb 2014 18:13
Date: Mon, 10 Feb 2014 18:13
66 lines
3473 bytes
3473 bytes
W dniu 10.02.2014 17:33, Arivald pisze: > W dniu 2014-02-10 16:01, J-23 pisze: >> W dniu 09.02.2014 23:14, Arivald pisze: >>> On 2014-02-09 22:50, J-23 wrote: >>>> Witam, >> >>> >>> Jedyne rozwiązanie o jakim mogę pomyśleć, to pełny parser SQL. Parsujesz >>> oryginalny SQL do drzewa obiektów, dodajesz swoje warunki i ponownie >>> generujesz SQL. >>> >>> Rozwiązanie oparte na stringach już widziałem, i niestety musiałem z nim >>> pracować... Kod okropny, a w miarę pojawiania się kolejnych przypadków >>> do obsłużenie coraz okropniejszy. >>> >>> A parserów w Javie jest trochę, trzeba by sprawdzić który odpowiada >>> Twoim wymaganiom. >>> >> >> A robiłeś coś takiego wiesz który potrafi to zrobić w obie strony jak >> piszesz? >> > > Nie, jeszcze tego nie przerabiałem. Ale po doświadczeniach z tamtym > kodem powiedziałem sobie "nigdy więcej" ;-) Dlatego nie polecam takiego > podejścia. > > A tak właściwie to do czego Ci to potrzebne? Mo może wystarczy > programowe filtrowanie już po otrzymaniu wyniku? > Robie pewnego rodzaju automat nie będe się rozpisywał bo to by trochę zajęło, ale została mi edycja rekodu do zrobienia a ze zasada jest taka że dane w tym automacie zależą od zapytania SQL które może być zmienione podczas działania programu to musze zabezpieczyc dane podczas edycji (przed zmianą przez innego użytkownika) czyli: mam np zapytanie SQL SELECT sesje.id_sesje, sesje.numer, sesje.data, sesje.rozpatrzona, osoby.imie ||' '|| osoby.nazwisko AS przewodniczacy FROM sesje LEFT JOIN sesje_eksperci ON sesje.id_sesje=sesje_eksperci.id_sesje AND sesje_eksperci.przewodniczacy=1 LEFT JOIN osoby ON osoby.id_osoby=sesje_eksperci.id_osoby ORDER BY sesje.numer ASC muszę to zapytanie odpalić w transakcji z izolacją Seriabile ale w postaci SELECT sesje.id_sesje, sesje.numer, sesje.data, sesje.rozpatrzona, osoby.imie ||' '|| osoby.nazwisko AS przewodniczacy FROM sesje LEFT JOIN sesje_eksperci ON sesje.id_sesje=sesje_eksperci.id_sesje AND sesje_eksperci.przewodniczacy=1 LEFT JOIN osoby ON osoby.id_osoby=sesje_eksperci.id_osoby WHERE sesje.id_sesje=1 <---- ten element został dodany by dokonać edycji ORDER BY sesje.numer ASC ten SQL to tylko przykład ale zapytania mogą być dowolne edycja rekordu zawsze będzie się odbywać po kluczu głownym i to go trzeba dodać do istniejącego SQL Pozdrawiam
Technical Details
Message-ID:
<ldb4ue$a82$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<ld8t8a$vlk$1@node2.news.atman.pl> <ld8uks$fp2$1@news.dialog.net.pl> <ldapm3$p1t$1@node1.news.atman.pl> <ldav1h$eia$1@news.dialog.net.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: J-23 <baczeklu@o2.pl> Newsgroups: pl.comp.lang.delphi.bazy-danych,pl.comp.lang.java Subject: Re: Dodawanie WHERE do dowolnego zapytania SQL Date: Mon, 10 Feb 2014 19:13:40 +0100 Organization: ATMAN - ATM S.A. Lines: 67 Message-ID: <ldb4ue$a82$1@node2.news.atman.pl> References: <ld8t8a$vlk$1@node2.news.atman.pl> <ld8uks$fp2$1@news.dialog.net.pl> <ldapm3$p1t$1@node1.news.atman.pl> <ldav1h$eia$1@news.dialog.net.pl> NNTP-Posting-Host: 87-205-165-161.adsl.inetia.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1392056079 10498 87.205.165.161 (10 Feb 2014 18:14:39 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Mon, 10 Feb 2014 18:14:39 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 In-Reply-To: <ldav1h$eia$1@news.dialog.net.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit