Autor | Zpráva | ||
---|---|---|---|
Tomtomas Profil |
#1 · Zasláno: 20. 11. 2008, 21:35:25 · Upravil/a: Tomtomas
Mám tabulku dejme tomu jménem "účastníci zájezdu".
ID_ZAJEZDU ZAJEZD UCASTNIK1 UCASTNIK2 UCASTNIK3 1 Praha Karel Mirek Josef 2 Brno Jana Dana 3 Vary Mirek Roman 4 Plzeň Karel Josef Dana 5 Opava Jana Nedaří se mi vymyslet podobu SQL dotazů, abych mohl provádět abecední výpis všech účastníků, co kdy byli na některém zájezdu, tj. každý bude uveden jen jednou, a to nejlépe po skupinách dle počátečního písmena (od J: Jana, Josef, od K: Karel, ...). Předem díky za nějaký nasměrování. |
||
Alphard Profil |
#2 · Zasláno: 20. 11. 2008, 22:06:09
špatný návrh
sestavte to jako M:N účastníky do samostatné tabulky, zájezdy do samostatné tabulky a třetí tabulku spojovací http://www.linuxsoft.cz/article.php?id_article=854 |
||
Tomtomas Profil |
#3 · Zasláno: 20. 11. 2008, 22:15:08
Zapoměl jsem to zmínit, ale problémem je, že ta tabulka má základ v Microsoft Excelu, kam je to ručně psáno a sem se jen občas importem přes *.csv přidají další záznamy. Kdybych to řešil samostatně, tak to udělám jako relační. V této fázi ale nevím, jak to řešit. Takže mě zajímá, jestli v tomto případě lze nějak abecedního výpisu dosáhnout, třeba i kostrbatě. Pokud ne, přežiju to :-)
|
||
Alphard Profil |
#4 · Zasláno: 20. 11. 2008, 22:36:16
Tomtomas
bylo by možné zduplikovat to do zmíněného návrhu? jak rozsáhlé to je? nebo to z *.csv rovnou transformovat jinak bych to viděl na poddotaz, ale konkrétně mě nic (kromě silně neefektivní temporary table) nenapadá, ale Kajman_ tady většinou sype dotazy z rukávu, třeba vám poradí |
||
Kajman_ Profil * |
A není to jednodušší naprogramovat v Excelu?
Takhle se si musíte zjistit názvy sloupečků a podle nich vygenerovat dotaz podobný tomuto select substr(jmeno,0,1) pismeno, group_concat(distinct jmeno order by jmeno) jmena from ( select ucastnik1 as jmeno from tabulka union select ucastnik2 from tabulka union select ucastnik3 from tabulka ) t group by substr(jmeno,0,1) |
||
bohyn Profil |
#6 · Zasláno: 21. 11. 2008, 09:18:26
Tomtomas
Co treba to csv v aplikacni logice (PHP, VBA atd.) rozdelit a az pak importovat do DB? |
||
Tomtomas Profil |
#7 · Zasláno: 21. 11. 2008, 09:21:13 · Upravil/a: Tomtomas
Díky za odpověď. Včera jsem nakonec přišel taky na řešení přes UNION:
SELECT ucastnik1 FROM ucastnici_zajezdu WHERE ucastnik1 != '' UNION SELECT ucastnik2 FROM ucastnici_zajezdu WHERE ucastnik2 != '' UNION SELECT ucastnik3 FROM ucastnici_zajezdu WHERE ucastnik3 != '' ORDER BY 1 vypisující abecedně všechny účastníky bez duplicit. Přišlo mě ale, že takovýto dotaz nebude úplně nenáročný na prostředky (předpoklad je až několik tisíc záznamů /"zájezdů"/), takže asi zkusím vymyslet, jak tento dotaz provést přímo do tabulky všech účastníků, který by se prováděl po každém importu, s čímž by se pak daleko líp pracovalo. Naštěstí vím, že těch pomyslných "účastníků" bude max. 3. Pořešit něco z toho už v Excelu mě taky napadlo, uvidím, co se mě podaří a co mě bude dovoleno :) |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0