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.
Zajímavá 1Pro koho je otázka zajímavá? Frogman před 3233 dny |
Sledovat
Nahlásit
|
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. :)
Upravil/a: Frogman
1Kdo udělil odpovědi palec? anonym
před 3233 dny
|
0 Nominace Nahlásit |
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. ;)
Bedy | 1528 | |
Michal Kole | 1199 | |
led | 1156 | |
Hlada | 1131 | |
mosoj | 1124 | |
gecco | 904 | |
www | 828 | |
badisko | 817 | |
cochee | 814 | |
Dochy | 725 |
Software |
Hardware |
Internet |
Programování a webdesign |
Sítě |
Bezpečnost |
Ostatní počítače a internet |