Avatar uživatele

Jak napsat T-SQL dotaz?

Mám DB tabulku se sloupci:
id int primary key,
město varchar,
jméno varchar,
datum datetime

Ve sloupci ID a DATUM jsou vždy unikátní data, MĚSTO a JMÉNO se může opakovat. Chci vypsat poslední datum tak, abych se mi kombinace MĚSTO a JMÉNO vypsala jen jednou, ale abych dostal i data ze sloupců ID a DATUM.

Data v tabulce
1;Praha;Franta;1.1.2000
2;Praha;Franta;1.1.2001
3;Brno;Franta;1.1.2002
4;Brno;Pepa;1.1.2003
5;Brno;Pepa;1.1.2004
6;Pardubice;Jarda;1.1.2005

Výsledkem má být:

2;Praha;Franta;1.1.2001
3;Brno;Franta;1.1.2002
5;Brno;Pepa;1.1.2004
6;Pardubice;Jarda;1.1.2005

Ve výsledku nebudou tyto řádky, protože existuje novější záznam:
1;Praha;Franta;1.1.2000
4;Brno;Pepa;1.1.2003

Díky předem za nakopnutí.

Doplnění: takhle jsem to udělal taky, temporary tabulka, tam nasypu ID, beru záznam po záznamu a když je novější, vložím do další temporary tabulky. Pak záznam v první temp smažu a čtu dál. V SQL nejsem moc pevný v kramflecích, tak mě napadlo, jestli to nejde jednodušeji. Asi nejde :) Dík.

Odpovědi:

Avatar uživatele
Bronzový

Nevidím důvod k tomu, aby data (mn. č. slova datum) měla unikátní klíč, ale budiž... Pokud jsi myslel slovem "unikátní" slovo "neopakující se" - tj. bez unikátního klíče, tak to pak jo.

Nejdříve bych si udělal ještě tabulky zvlášť na města a zvlášť na jména. Někdy je výhodnější mít více tabulek a propojovat je, než mít vše v jedné - tam se pak hůře hlídají stejné hodnoty, mělo by to sice taky jít (nezkoušel jsem to), jen je to mnohem složitější.

Pak bych napsal dotaz (respektive 2 dotazy) na výběr všech dat a propojení s tabulkou měst a jmen. Cyklus pak proběhne jen všechna města v tabulce měst, do první proměnné se uloží první jméno, které je u prvního města (do dalších proměnných můžeš uložit i ostatní data z tabulky). Když cyklus narazí na další jméno, u kterého je stejné město, porovná se podmínkou if jméno se jménem, které je uloženo v proměnné a v případě, že je jméno stejné, porovnají se ještě podmínkou if data (mn. č. slova datum), v případě, že je datum větší (= pravda) (novější), pak se do proměnných uloží všechny aktuální údaje.
No a takhle to pojede dál.

Snad je to aspoň trochu pochopitelné... :)

PS: Promiň, předtím jsem nebral v úvahu, že jméno se taky nesmí schodovat. :)

 

Diskuze k otázce

Avatar uživatele
Bronzový

Frogman

Já v MySQL dělám sotva asi rok, takže jiný postup (zatím) neznám, ale zkus se zeptat tady: http://diskuse.jakpsatweb.cz/
Je tam spousta hodně chytrých lidí, kteří vždy na něco přijdou. ;)

 

Přihlásit se

Položte otázku, odpovězte, zapojte se, …

začněte zde

Reklama

Kvalitní odpovědi v: Počítače a internet

Zlatý Bedy 1525
Zlatý Michal Kole 1198
Zlatý mosoj 1028
Zlatý Hlada 948
Zlatý ge0rge 894
Zlatý www 829
Zlatý led 820
Zlatý badisko 818
Zlatý gecco 795
Zlatý arygnoc 674

Zobrazit celkový žebříček

Facebook

 

Váš požadavek se vyřizuje, počkejte prosím.