Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

select - najstarsza data

2,483 views
Skip to first unread message

tomi613

unread,
Feb 9, 2011, 4:09:45 AM2/9/11
to
Witam. Nie jestem dobry z sql ale chce wyciągnąć dane z tabeli
W tabeli mam np. takie dane
nazwisko imie data_od
kowalski jan 09-09-1999
kowalski jan 03-09-2000
kowalski jan 05-07-2005

Jak wyciągnąć dane z najstarszą datą od?

Zull

unread,
Feb 9, 2011, 4:33:22 AM2/9/11
to
On 2011-02-09 10:09, tomi613 wrote:
> Witam. Nie jestem dobry z sql ale chce wyci�gn�� dane z tabeli

> W tabeli mam np. takie dane
> nazwisko imie data_od
> kowalski jan 09-09-1999
> kowalski jan 03-09-2000
> kowalski jan 05-07-2005
>
> Jak wyci�gn�� dane z najstarsz� dat� od?


SELECT MIN( data_od ) from [ nazwa tablei ] group by [ kryterium
grupowania ]

tomi613

unread,
Feb 9, 2011, 4:38:06 AM2/9/11
to
dzięki, ale zapomniałem dodać że chce do np. jana kowalskiego mieć
najstarszą datę, w tabeli mam kilkaset nazwisk i chce do każdej z tych
nazwisk mieć nastraszą datę

Zull

unread,
Feb 9, 2011, 4:53:07 AM2/9/11
to
On 2011-02-09 10:38, tomi613 wrote:
> dzi�ki, ale zapomnia�em doda� �e chce do np. jana kowalskiego mie�
> najstarsz� dat�, w tabeli mam kilkaset nazwisk i chce do ka�dej z tych
> nazwisk mieďż˝ nastraszďż˝ datďż˝
>


Do tego w�a�nie s�u�y klauzula group by

tomi613

unread,
Feb 9, 2011, 4:59:17 AM2/9/11
to

>
> Do tego w a nie s u y klauzula group by

nie rozumiem?
ja robię zapytanie powiązane
select nazwisko, data_od from nazwa_tabeli where data_od(select
min(data_od) from nazwa_tabeli)
tylko nie żadnych wyników nie mam :(

PaSkol

unread,
Feb 9, 2011, 5:07:51 AM2/9/11
to
W dniu 2011-02-09 10:59, tomi613 pisze:

> select nazwisko, data_od from nazwa_tabeli where data_od(select
> min(data_od) from nazwa_tabeli)

select nazwisko, imie, min(data_od) as data_od
from nazwa_tabeli
group by nazwisko, imie;

--
PaSkol

tomi613

unread,
Feb 9, 2011, 5:29:22 AM2/9/11
to

ok działa tylko w wyniku mam 3 rekordy dla nazwiska kowalski, a chce
uzyskać dla nazwiska 1 rekord z najstarszą datą

tomi613

unread,
Feb 9, 2011, 5:33:21 AM2/9/11
to

działa tylko jak dodam kod_gminy w selekcie to do group by też muszę
dodać i przez to mam 3 rekordy, jak mam zmodyfikować selecta żeby nie
sortował kod_gminy po group by?

PaSkol

unread,
Feb 9, 2011, 5:47:20 AM2/9/11
to
W dniu 2011-02-09 11:33, tomi613 pisze:

>> ok dzia�a tylko w wyniku mam 3 rekordy dla nazwiska kowalski, a chce
>> uzyskaďż˝ dla nazwiska 1 rekord z najstarszďż˝ datďż˝
>
> dzia�a tylko jak dodam kod_gminy w selekcie to do group by te� musz�
> doda� i przez to mam 3 rekordy, jak mam zmodyfikowa� selecta �eby nie
> sortowaďż˝ kod_gminy po group by?

Musisz by� bardziej precyzyjny. W�a�ciwie nie wiem o co Ci chodzi, wi�c
proponujďż˝ tak:

select NT.*
from nazwa_tabeli NT
inner join (
select nazwisko as n, min(data_od) d
from nazwa_tabeli
group by nazwisko
) Q on n = nazwisko and d = data_od;

Czyli wybrane zostan� wszystkie rekordy, kt�re dla niepowtarzalnego
nazwiska (ale juďż˝ nie imienia) posiadajďż˝ najstarszďż˝ datďż˝. Nie wiem, jaki
system baz danych wi�c niekoniecznie musi zadzia�a�.

--
PaSkol

tomi613

unread,
Feb 9, 2011, 5:56:33 AM2/9/11
to
On 9 Lut, 11:47, PaSkol <pas...@op.pl> wrote:
> W dniu 2011-02-09 11:33, tomi613 pisze:
>
> >> ok dzia a tylko w wyniku mam 3 rekordy dla nazwiska kowalski, a chce
> >> uzyska dla nazwiska 1 rekord z najstarsz dat
>
> > dzia a tylko jak dodam kod_gminy w selekcie to do group by te musz
> > doda i przez to mam 3 rekordy, jak mam zmodyfikowa selecta eby nie
> > sortowa kod_gminy po group by?
>
> Musisz by bardziej precyzyjny. W a ciwie nie wiem o co Ci chodzi, wi c
> proponuj tak:

>
> select NT.*
> from nazwa_tabeli NT
>    inner join (
>    select nazwisko as n, min(data_od) d
>    from nazwa_tabeli
>    group by nazwisko
> ) Q on n = nazwisko and d = data_od;
>
> Czyli wybrane zostan wszystkie rekordy, kt re dla niepowtarzalnego
> nazwiska (ale ju nie imienia) posiadaj najstarsz dat . Nie wiem, jaki
> system baz danych wi c niekoniecznie musi zadzia a .
>
> --
> PaSkol

dzięki ale nie działa mam bazę informix, a nie można zrobić za pomocą
zapytań powiązanych bez łączenia?

PaSkol

unread,
Feb 9, 2011, 6:19:36 AM2/9/11
to
W dniu 2011-02-09 11:56, tomi613 pisze:
> dzi�ki ale nie dzia�a mam baz� informix, a nie mo�na zrobi� za pomoc�
> zapyta� powi�zanych bez ��czenia?

Mo�e da si� tak:

select NT.*
from nazwa_tabeli NT, (


select nazwisko as n, min(data_od) d
from nazwa_tabeli
group by nazwisko
) Q

where n = nazwisko and d = data_od;

--
PaSkol

Message has been deleted

tomi613

unread,
Feb 9, 2011, 6:26:23 AM2/9/11
to
On 9 Lut, 12:18, "\\n" <n...@ma.xy> wrote:
> W dniu 09-02-2011 11:33, tomi613 pisze:

>
> >> ok dzia a tylko w wyniku mam 3 rekordy dla nazwiska kowalski, a chce
> >> uzyska dla nazwiska 1 rekord z najstarsz dat
>
> > dzia a tylko jak dodam kod_gminy w selekcie to do group by te musz
> > doda i przez to mam 3 rekordy, jak mam zmodyfikowa selecta eby nie
> > sortowa kod_gminy po group by?
>
> select distinct nazwisko, imie, min(data_od) as data_od

> from nazwa_tabeli
> group by nazwisko, imie;
>
niestety dalej dostaje 3 rekordy ponieważ jeszcze wyciagam kod gminy

hubert depesz lubaczewski

unread,
Feb 9, 2011, 6:27:08 AM2/9/11
to

http://www.dbf.pl/faq/index.html
punkt 0.3

depesz

--
Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/
jid/gtalk: dep...@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007

Message has been deleted

tomi613

unread,
Feb 9, 2011, 6:55:42 AM2/9/11
to
On 9 Lut, 12:40, "\\n" <n...@ma.xy> wrote:
> W dniu 09-02-2011 12:26, tomi613 pisze:
> > niestety dalej dostaje 3 rekordy poniewa jeszcze wyciagam kod gminy
>
> select nazwisko, imie, min(data_od) as data_od, min(kod gminy)

> from nazwa_tabeli
> group by nazwisko, imie;
>
> zamiast "min" w wyra eniu "min(kod gminy)" mo esz sobie wpisa do wyboru
> "max", "first", "last" albo (w niekt rych bazach danych, ale nie wiadomo
> czy akurat w Twojej bo nic o tym nie napisa ) w og le nic nie pisa
>
> Pewnie zaraz si oka e, e dalej wypluwa 5 rekord w bo zapomnia e
> napisa e jest jeszcze ulica, wi c mo e od razu:
>
> select distinct nazwisko, imie, min(data_od) as data_od, min(kod gminy)

> from nazwa_tabeli
> group by nazwisko, imie;
>
> --
> Panie, zachowaj mnie od zgubnego nawyku mniemania,
> e musz co powiedzie na ka dy temat i przy ka dej okazji.
> Odbierz mi ch prostowania ka demu jego cie ek.

działa ale wynik jest nie prawidłowy, jeszcze raz w tabeli mam takie
dane

nazwisko kod_gminy data_od
kowalski 1863011 1/10/2009
kowalski 1818011 4/03/2001
kowalski 1819013 5/05/2010
kowalski1 1853013 1/10/2009
kowalski1 1843011 1/10/2008

chce żebym w wyniku dostał
kowalski 1818011 4/03/2001
kowalski1 1843011 1/10/2008

czyli z najstarszą tylko datą

Marcin Wróblewski

unread,
Feb 9, 2011, 7:11:57 AM2/9/11
to

Jaka baza (i wersja)?

tomi613

unread,
Feb 9, 2011, 7:29:09 AM2/9/11
to
On 9 Lut, 13:11, Marcin Wróblewski <marcin.wroblew...@gmail.com>

ibm informix v. 9.4 TC9

Paweł Matejski

unread,
Feb 9, 2011, 7:25:31 AM2/9/11
to
W dniu 09.02.2011 12:27, hubert depesz lubaczewski pisze:
>
> http://www.dbf.pl/faq/index.html
> punkt 0.3

I pewnie dostaniesz [SQL]. ;)

Może by tak usunąć pierwszy wiersz z tej tabelki?


--
P.M.

Message has been deleted

tomi613

unread,
Feb 9, 2011, 8:03:26 AM2/9/11
to
On 9 Lut, 13:51, "\\n" <n...@ma.xy> wrote:
> W dniu 09-02-2011 12:55, tomi613 pisze:

>
> > działa ale wynik jest nie prawidłowy,
>
> Wynik jest zgodny z *przedstawionym* pytaniem więc jak najbardziej jest
> prawidłowy...tyle że najwyraźniej pytasz o coś innego niż Ci chodzi.

>
> > jeszcze raz w tabeli mam takie
> > dane
>
> > nazwisko   kod_gminy    data_od
> > kowalski    1863011        1/10/2009
> > kowalski    1818011        4/03/2001
> > kowalski    1819013        5/05/2010
> > kowalski1    1853013        1/10/2009
> > kowalski1    1843011        1/10/2008
>
> > chce żebym w wyniku dostał
> > kowalski    1818011        4/03/2001
> > kowalski1  1843011        1/10/2008
>
> > czyli z najstarszą tylko datą
>
> To są wszystkie dane? Założę się że nie bo przy tych danych zapytanie
>
> select nazwisko, imie, min(data_od) as data_od

> from nazwa_tabeli
> group by nazwisko, imie;
>
> nie mogło zwrócić trzech rekordów z kowalskim (jak twierdzisz). Po co to
> mówię? Ano dlatego, że nadal, nawet stosując jakieś domysły na podstawie
> podanych danych, nie wiadomo o co Ci chodzi. Weź Ty w końcu sformułuj
> *precyzyjne* zapytanie co chcesz uzyskać z jakich danych. Przede
> wszystkim wydukaj wreszcie jakie jest kryterium wyboru kodu gminy i jak
> to się ma do daty.
> I w końcu podaj bazę danych i wersję jak już kilkakrotnie zwrócono Ci

Używam bazy IBM Informix v. 9.4 TC9
chce wyciągnąć nazwisko, kod gminy nic więcej bez imienia, a kryterium
wyszukiwania to najstarsza data
co chcesz wiedzieć więcej?

Zull

unread,
Feb 9, 2011, 8:18:49 AM2/9/11
to


kłania się takie zwierzę, które nazywa się HAVING ;)

tomi613

unread,
Feb 9, 2011, 8:32:35 AM2/9/11
to

z having próbuje i wyskakuje że bład
seleckt nazwisko, kodgminy, min(data_od) as data from mojatabela where
having nazwisko, kodgminy

Zull

unread,
Feb 9, 2011, 8:35:24 AM2/9/11
to

> z having pr�buje i wyskakuje �e b�ad

> seleckt nazwisko, kodgminy, min(data_od) as data from mojatabela where
> having nazwisko, kodgminy

having to warto�� boolean'owa
przyjmuje warto�� PRAWDA albo FA�SZ

tomi613

unread,
Feb 9, 2011, 8:38:35 AM2/9/11
to
On 9 Lut, 14:35, Zull <zsz-nos...@leo.wsinf.edu.pl> wrote:
> > z having pr buje i wyskakuje e b ad

> > seleckt nazwisko, kodgminy, min(data_od) as data from mojatabela where
> > having nazwisko, kodgminy
>
> having to warto boolean'owa
>     przyjmuje warto PRAWDA albo FA SZ

no to w końcu jak ma wyglądać sql

A.L.E.C

unread,
Feb 9, 2011, 8:45:30 AM2/9/11
to
On 09.02.2011 14:38, tomi613 wrote:

>> having to warto boolean'owa
>> przyjmuje warto PRAWDA albo FA SZ
>

> no to w ko�cu jak ma wygl�da� sql

przeczytaj w manualu do swojej bazy lub ka�dym innym do SQLa. Nie
zadawaj pyta� na kt�re mo�na �atwo znale�� odpowied�

Wydaje mi si�, �e HAVING ci nie pomo�e. Do takich rzeczy w postgresie
u�ywa si� sk�adni DISTINCT ON, nie wiem jak w innych bazach.

--
Aleksander 'A.L.E.C' Machniak
LAN Management System Developer [http://lms.org.pl]
Roundcube Webmail Developer [http://roundcube.net]
---------------------------------------------------
PGP: 19359DC1 @@ GG: 2275252 @@ WWW: http://alec.pl

hubert depesz lubaczewski

unread,
Feb 9, 2011, 8:48:07 AM2/9/11
to
On 2011-02-09, Paweł Matejski <ma...@nospam.madej.pl.eu.org> wrote:
> W dniu 09.02.2011 12:27, hubert depesz lubaczewski pisze:
>>
>> http://www.dbf.pl/faq/index.html
>> punkt 0.3
>
> I pewnie dostaniesz [SQL]. ;)

jeśli cokolwiek.

> Może by tak usunąć pierwszy wiersz z tej tabelki?

:)
ale dzięki temu można przynajmniej ustawić sobie regułkę odrzucającą
[SQL] w killfileu :)

Jacek

unread,
Feb 9, 2011, 9:36:28 AM2/9/11
to
Dnia Wed, 09 Feb 2011 14:45:30 +0100, A.L.E.C napisał(a):

> On 09.02.2011 14:38, tomi613 wrote:
>
>>> having to warto boolean'owa
>>> przyjmuje warto PRAWDA albo FA SZ
>>

>> no to w końcu jak ma wyglądać sql
>
> przeczytaj w manualu do swojej bazy lub każdym innym do SQLa. Nie
> zadawaj pytań na które można łatwo znaleźć odpowiedź
>
> Wydaje mi się, że HAVING ci nie pomoże. Do takich rzeczy w postgresie
> używa się składni DISTINCT ON, nie wiem jak w innych bazach.

Dodam (dla Tomi613), ze:

Essentially what the DISTINCT keyword does is removing the duplicates from
the result set returned by your SELECT SQL statement.

Nie bedziesz mial duplikatow dla gmin.

tomi613

unread,
Feb 9, 2011, 12:00:57 PM2/9/11
to

wiem że to banalnie proste ale z DISTINCT nie działa, dalej uzyskuję
3 rekordy, i nie wiem co dalej, ktoś pomoże

tomi613

unread,
Feb 9, 2011, 12:18:48 PM2/9/11
to

próbuje proste zagnieżdżone zapytanie zrobić i wydaje mi że informix
tego nie obsługuje
select kodgminy from mojatabela where nazwisko=(select naziwsko from
moja tabela where nazwisko='kowalski')
mojatabela dotyczy tej samej tabeli, nawet to nie przejdzie, wiem że
to można zrobić w jednym zapytaniu ale nie chciałem sprawdzić
działanie zagnieżdżonych zapytań

tomi613

unread,
Feb 9, 2011, 12:36:59 PM2/9/11
to

jednak obsługuje zagnieżdżone zapytania select dalej nie wiem jak
wyciągnąć najniższą wartość z tabeli

tomi613

unread,
Feb 9, 2011, 12:49:57 PM2/9/11
to

ok działa select wygląda tak ale na okreśłone nazwisko
select nazwisko, kodgmina, dataod from moja_tabela where
nazwisko='kowalski' and dataod IN(select min(dataod) from kinadrza
where nazwisko='kowalski')

Może ktoś pomóc żeby wybrać wszystkie nazwiska z nastarszą data ?

MCz

unread,
Feb 9, 2011, 1:07:44 PM2/9/11
to
> > select kodgminy from mojatabela where nazwisko=(select naziwsko from
> > moja tabela where nazwisko='kowalski')
> > mojatabela dotyczy tej samej tabeli, nawet to nie przejdzie, wiem że
> > to można zrobić w jednym zapytaniu ale nie chciałem sprawdzić
> > działanie zagnieżdżonych zapytań
>
> jednak obsługuje zagnieżdżone zapytania select dalej nie wiem jak
> wyciągnąć najniższą wartość z tabeli

>ok działa select wygląda tak ale na okreśłone nazwisko
>select nazwisko, kodgmina, dataod from moja_tabela where
>nazwisko='kowalski' and dataod IN(select min(dataod) from kinadrza
>where nazwisko='kowalski')

Może tak?

select a.nazwisko,a.dat_od,b.kodgmina
from
(
select nazwisko,min(dataod) dat_od
from moja_tabela
group by nazwisko
) a, moja_tabela b
where b.nazwisko=a.nazwisko
and b.dataod=a.dat_od

MC

tomi613

unread,
Feb 9, 2011, 3:14:36 PM2/9/11
to

niestety ale nie dostaje błąd

tomi613

unread,
Feb 9, 2011, 3:31:54 PM2/9/11
to
On 9 Lut, 19:07, "MCz" <a...@lasek.pl> wrote:

wydaje mi się że select po form nie może być

PaSkol

unread,
Feb 9, 2011, 3:46:52 PM2/9/11
to
W dniu 2011-02-09 21:14, tomi613 pisze:

> niestety ale nie dostaje błąd

Ach, gdybyś jeszcze podawał jego treść. A tak pomoc Tobie to jak
łowienie ryb poprzez walenie kijem w wodę.

--
PaSkol

tomi613

unread,
Feb 9, 2011, 3:54:09 PM2/9/11
to

proszę bardzo, ale jak byś skrolem przewinął do gury to byś wiedział

select a.nazwisko,a.dat_od,b.kodgmina
from
(
select nazwisko,min(dataod) dat_od
from moja_tabela
group by nazwisko
) a, moja_tabela b
where b.nazwisko=a.nazwisko
and b.dataod=a.dat_od


baza informix v. 9.4

Przemek O.

unread,
Feb 9, 2011, 3:58:42 PM2/9/11
to
W dniu 2011-02-09 21:54, tomi613 pisze:

> On 9 Lut, 21:46, PaSkol<pas...@op.pl> wrote:
>> W dniu 2011-02-09 21:14, tomi613 pisze:
>>
>>> niestety ale nie dostaje b��d
>>
>> Ach, gdyby� jeszcze podawa� jego tre��. A tak pomoc Tobie to jak
>> �owienie ryb poprzez walenie kijem w wod�.
>>
>> --
>> PaSkol
>
> prosz� bardzo, ale jak by� skrolem przewin�� do gury to by� wiedzia�
>

O ja Cie pie....e. Nie dziwi� si� �e Ci nikt nie jest w stanie pom�c.

TRE�� B��DU!!!

--
pozdrawiam,
Przemys�aw Osma�ski, SoftSYSTEM
www.soft-system.pl
www.kochamjedzenie.pl - portal dla ludzi kt�rzy kochaj� jedzenie

Marian Kuś

unread,
Feb 9, 2011, 4:01:13 PM2/9/11
to
tomi613 napisał(a):

> Witam. Nie jestem dobry z sql ale chce wyciągnąć dane z tabeli
> W tabeli mam np. takie dane
> nazwisko imie data_od
> kowalski jan 09-09-1999
> kowalski jan 03-09-2000
> kowalski jan 05-07-2005
>
> Jak wyciągnąć dane z najstarszą datą od?

Widzę, że ostro się męczycie, a problem trywialny.

select id_pacjenta, data
from z_bd z
where
data = (select min(data) from z_bd where id_pacjenta = z.id_pacjenta)
group by id_pacjenta, data

lub

select distinct id_pacjenta, data
from z_bd z
where
data = (select min(data) from z_bd where id_pacjenta = z.id_pacjenta)

Składnia Oracle, sprawdzone na "żywych" danych.

Wewnętrzny select szuka najmniejszej daty dla każdego człowieka.
Klauzula distinct lub group by potrzebne w sytuacji jeśli dla danej
osoby mogą być dwa rekordy z daną datą.

--
maryjan
"Każdymu świyci tak dłógo gwiozda na niebie
Aż wygaśniyncio przidzie jeji czas"
Blaf (http://www.blaf.cz/index.php?body=texty&cas=1002191865)

tomi613

unread,
Feb 9, 2011, 4:08:28 PM2/9/11
to

dzięki wielkie działa, wiem że problem trywialny ale na zaliczenie
trzeba ćwiczyć

Marian Kuś

unread,
Feb 9, 2011, 4:19:11 PM2/9/11
to
tomi613 napisał(a):

> dzięki wielkie działa,
[...]

Spoko. To z 'distinct' jest lepsze, niż to z grupowaniem.

--
maryjan

A.L.E.C

unread,
Feb 10, 2011, 2:49:51 AM2/10/11
to
On 09.02.2011 22:08, tomi613 wrote:

> dzi�ki wielkie dzia�a, wiem �e problem trywialny ale na zaliczenie
> trzeba �wiczy�

albo ci si� tylko tak wydaje. Jak wstawi�e� kolumn� kodgmina w te zapytania?

NKAB -

unread,
Feb 10, 2011, 3:09:13 AM2/10/11
to
Nie mam pod r�k� manuala ale mo�e jast jaki� "UNIQUE".

Andrzej.


--
Wys�ano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

tomi613

unread,
Feb 10, 2011, 3:37:04 AM2/10/11
to
On 10 Lut, 08:49, "A.L.E.C" <al...@poczta.onet.pl> wrote:
> On 09.02.2011 22:08, tomi613 wrote:
>
> > dzięki wielkie działa, wiem że problem trywialny ale na zaliczenie
> > trzeba ćwiczyć
>
> albo ci się tylko tak wydaje. Jak wstawiłeś kolumnę kodgmina w te zapytania?

>
> --
> Aleksander 'A.L.E.C' Machniak
> LAN Management System Developer [http://lms.org.pl]
> Roundcube Webmail Developer  [http://roundcube.net]
> ---------------------------------------------------
> PGP: 19359DC1 @@ GG: 2275252 @@ WWW:http://alec.pl

działa na 100%
select wygląda tak
SELECT DISTINCT nazwisko, kodgminy, dataod FROM mojatabela
a.mojatabela WHERE dataod IN (select min(dataod) from mojatabela where
nazwisko=a.nazwisko)

wloochacz

unread,
Feb 10, 2011, 3:43:21 AM2/10/11
to
W dniu 2011-02-09 21:31, tomi613 pisze:
/ciach/

> wydaje mi si� �e select po form nie mo�e by�
To Ci si� �le wydaje...
Wr�� do czytania dokumentacji i doczytaj o derived tables, a potem wr��
na grupďż˝.

PS - po co pomagaďż˝ komuďż˝, kto:
1) Jest zainteresowany tylko dzia�aj�cym zapytaniem
2) Nie jest zainteresowany poszerzeniem swojej wiedzy (tak wiem, pisz�c
o wiedzy przesadzi�em w spos�b absolutnie niewyw�aszczalny)
3) Nie czyta tego co siďż˝ do niego pisze, uruchamia zapytania
4) Nie jest w �aden spos�b zainteresowany znalezieniem rozwi�zania na
w�asn� r�k�
5) I jeszcze m�drkuje...

--
wloochacz

Mateo

unread,
Feb 10, 2011, 3:44:50 AM2/10/11
to
W dniu 2011-02-09 22:01, Marian Kuďż˝ pisze:
> tomi613 napisaďż˝(a):
>> Witam. Nie jestem dobry z sql ale chce wyci�gn�� dane z tabeli

>> W tabeli mam np. takie dane
>> nazwisko imie data_od
>> kowalski jan 09-09-1999
>> kowalski jan 03-09-2000
>> kowalski jan 05-07-2005
>>
>> Jak wyci�gn�� dane z najstarsz� dat� od?
>
> Widz�, �e ostro si� m�czycie, a problem trywialny.

>
> select id_pacjenta, data
> from z_bd z
> where
> data = (select min(data) from z_bd where id_pacjenta = z.id_pacjenta)
> group by id_pacjenta, data

uruchom taki kod dla tabeli z 10 000 000 rekordow i podaj czas wykonania ;)

--
Mateo

Message has been deleted

tomi613

unread,
Feb 10, 2011, 6:44:54 AM2/10/11
to
On 10 Lut, 10:04, "\\n" <n...@ma.xy> wrote:
> W dniu 10-02-2011 09:44, Mateo pisze:
> ...

>
> > uruchom taki kod dla tabeli z 10 000 000 rekordow i podaj czas wykonania ;)
>
> Nie ma potrzeby. Takim jak on wystarczy zaliczenie na s ab tr jczyn .
>
> --
> Panie, zachowaj mnie od zgubnego nawyku mniemania,
> e musz co powiedzie na ka dy temat i przy ka dej okazji.
> Odbierz mi ch prostowania ka demu jego cie ek.

przecież nie pytałem się o wydajność tylko o składnie, a co do
zaliczenia to na własny użytek robię, i proszę was resztę uwag
wsadzcie sobie w 4 literki
pozdrawiam

A.L.E.C

unread,
Feb 10, 2011, 7:23:41 AM2/10/11
to
On 10.02.2011 09:37, tomi613 wrote:

> dzia�a na 100%
> select wygl�da tak


> SELECT DISTINCT nazwisko, kodgminy, dataod FROM mojatabela
> a.mojatabela WHERE dataod IN (select min(dataod) from mojatabela where
> nazwisko=a.nazwisko)

Dwie uwagi:
1. Nazwisko, ani nazwisko i imiďż˝ nie sďż˝ danymi unikalnymi, powinieneďż˝
raczej mieďż˝ tutaj jakieďż˝ ID osoby
2. Musisz zadba� aby kombinacja osoba+dataod by�a unikalna, bo je�li nie
b�dzie to zapytanie mo�e dawa� wyniki kt�rych nie oczekiwa�e�.

tomi613

unread,
Feb 10, 2011, 7:31:03 AM2/10/11
to
On 10 Lut, 13:23, "A.L.E.C" <al...@poczta.onet.pl> wrote:
> On 10.02.2011 09:37, tomi613 wrote:
>
> > działa na 100%
> > select wygląda tak

> > SELECT DISTINCT nazwisko, kodgminy, dataod FROM mojatabela
> > a.mojatabela WHERE dataod IN (select min(dataod) from mojatabela where
> > nazwisko=a.nazwisko)
>
> Dwie uwagi:
> 1. Nazwisko, ani nazwisko i imię nie są danymi unikalnymi, powinieneś
> raczej mieć tutaj jakieś ID osoby
> 2. Musisz zadbać aby kombinacja osoba+dataod była unikalna, bo jeśli nie
> będzie to zapytanie może dawać wyniki których nie oczekiwałeś.

>
> --
> Aleksander 'A.L.E.C' Machniak
> LAN Management System Developer [http://lms.org.pl]
> Roundcube Webmail Developer  [http://roundcube.net]
> ---------------------------------------------------
> PGP: 19359DC1 @@ GG: 2275252 @@ WWW:http://alec.pl

dzięki za info
możesz mi powiedzieć dlaczego takie zapytanie z podaniem nazwy tablicy
nie chce się wykonać?
SELECT DISTINCT mojatabela.nazwisko, mojatabela.kodgminy,
mojatabela.dataod FROM mojatabela
a.mojatabela WHERE mojatabela.dataod IN (select min(mojatabela.dataod)
from mojatabela where
nazwisko=a.nazwisko)

A.L.E.C

unread,
Feb 10, 2011, 7:40:26 AM2/10/11
to
On 10.02.2011 13:31, tomi613 wrote:

> możesz mi powiedzieć dlaczego takie zapytanie z podaniem nazwy tablicy
> nie chce się wykonać?
> SELECT DISTINCT mojatabela.nazwisko, mojatabela.kodgminy,
> mojatabela.dataod FROM mojatabela
> a.mojatabela WHERE mojatabela.dataod IN (select min(mojatabela.dataod)
> from mojatabela where
> nazwisko=a.nazwisko)

źle stosujesz aliasy, zobacz czy nie lepiej tak

SELECT DISTINCT a.nazwisko, a.kodgminy, a.dataod
FROM mojatabela a
WHERE a.dataod IN (
SELECT min(dataod)
FROM mojatabela
WHERE nazwisko = a.nazwisko
)

Jacek

unread,
Feb 10, 2011, 7:43:19 AM2/10/11
to

Jak potrzebowales pomocy, to byles grzeczny.
Jak juz otrzymales pomoc, to jestes chamski!

tomi613

unread,
Feb 10, 2011, 7:59:18 AM2/10/11
to

dzięki,
ostatnie pytanie czy wogóle można zrobić kolejne podzapytanie że np.
jeśli data jest starsza od roku to zamień datęod ale nie w bazie tylko
w wyniku zapytania, jest takie coś możliwe?

Zull

unread,
Feb 10, 2011, 8:33:01 AM2/10/11
to

>
> dzięki,
> ostatnie pytanie czy wogóle można zrobić kolejne podzapytanie że np.
> jeśli data jest starsza od roku to zamień datęod ale nie w bazie tylko
> w wyniku zapytania, jest takie coś możliwe?


select case ( POLE )
when 'kiedy coś tam ' THEN 'wyświetl coś tam '
end case .....


Zull

unread,
Feb 10, 2011, 9:14:48 AM2/10/11
to
oczywiście bez niczego przy CASE, omckło mi się ;)

select case

wloochacz

unread,
Feb 11, 2011, 3:28:08 AM2/11/11
to
W dniu 2011-02-09 21:54, tomi613 pisze:
/ciach/

> prosz� bardzo, ale jak by� skrolem przewin�� do gury to by� wiedzia�

Jakim ku..a skrolem? I do jakiej "gury" - PaSkol prosi� o *TRE��
KOMUNIKATU B��DU*, a nie o wersj� bazy danych.

Skoro pojawia si� b��d podczas pr�by wykonania zapytania, to nawet taki
pajac jak ty powinien si� zorientowa�, �e podanie tre�ci tego komunikatu
mo�e pom�c zorientowa� si� dlaczego to na twojej bazie danych nie dzia�a.
Np. Czy baza nie obs�uguje jakiej� konstrukcji czy po prostu zrobi�e� z
siebie totalnego idiot� i �le skopiowa�e� tekst zapytania - na co
osobi�cie stawiam.
Teraz rozumiesz o co chodzi?

PS.
Chce Wam siďż˝ jeszcze z nim pisaďż˝?
PO CO?

--
wloochacz

Mateo

unread,
Feb 11, 2011, 10:01:24 AM2/11/11
to
W dniu 2011-02-10 10:04, \n pisze:

> W dniu 10-02-2011 09:44, Mateo pisze:
> ...
>> uruchom taki kod dla tabeli z 10 000 000 rekordow i podaj czas
>> wykonania ;)
>>
>
> Nie ma potrzeby. Takim jak on wystarczy zaliczenie na słabą trójczynę.

zly tok myslenia - potem takiemu tlumacz w zyciu ze musi wystawic klucz
bo inaczej moze sobie dane wsadzic .... w buty

--
Mateo

0 new messages