Article View: pl.comp.lang.java
Article #153987Re: Dodawanie WHERE do dowolnego zapytania SQL
From: Lesiok
Date: Tue, 11 Feb 2014 05:46
Date: Tue, 11 Feb 2014 05:46
77 lines
4135 bytes
4135 bytes
On 10.02.14 19:13, J-23 wrote: > 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 > A może podzapytanie : SELECT * FROM (twoje zapytanie oryginalne) WHERE twój warunek. Banalnie proste w realizacji od strony składniowej. -- ================================ Leszek KUBRAK
Technical Details
Message-ID:
<52f9b920$0$2152$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!peer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.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> <ldb4ue$a82$1@node2.news.atman.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!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!peer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Date: Tue, 11 Feb 2014 06:46:08 +0100 From: Lesiok <lesiok@infokub.com.pl> User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20130107 Thunderbird/10.0.12 MIME-Version: 1.0 Newsgroups: pl.comp.lang.delphi.bazy-danych,pl.comp.lang.java Subject: Re: Dodawanie WHERE do dowolnego zapytania SQL 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> <ldb4ue$a82$1@node2.news.atman.pl> In-Reply-To: <ldb4ue$a82$1@node2.news.atman.pl> Lines: 77 Message-ID: <52f9b920$0$2152$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 83.19.165.54 X-Trace: 1392097568 unt-rea-a-02.news.neostrada.pl 2152 83.19.165.54:46886 X-Complaints-To: abuse@news.neostrada.pl X-Received-Bytes: 3793 X-Received-Body-CRC: 3220755158 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit