🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153987

Re: Dodawanie WHERE do dowolnego zapytania SQL

#153987
From: Lesiok
Date: Tue, 11 Feb 2014 05:46
77 lines
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-mail
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>

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