Autor Zpráva
Tomtomas
Profil
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
š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
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
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
Tomtomas
Co treba to csv v aplikacni logice (PHP, VBA atd.) rozdelit a az pak importovat do DB?
Tomtomas
Profil
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 :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0