Autor | Zpráva | ||
---|---|---|---|
blaaablaaa Profil |
#1 · Zasláno: 26. 4. 2011, 13:00:16 · Upravil/a: blaaablaaa
Ahoj,
vytvářím systém pro registraci a správu účastníků různých konferencí, databáze tedy obsahuje v základu kontaktní údaje, ubytování účastníků (v jednotlivých dnech konference mohou být pokaždé v jiném hotelu i pokoji), dále jejich přednášky a ještě volitelné položky (doprovodný program apod.). Mám teď udělat přehled účastníků, který má vypadat následovně: Jmeno, Email, Ubytovani od - do, Pocet prednasek, Volitelne polozka 1, Volitelna polozka 2, ... Volitelna polozka N Pepa, pepa@pepa.cz, 1.1.2000-5.1.2000, 3, ANO, NE, ... ANO Takto vypisuji i více než 100 účastníků na jedné stránce, do toho přichází ještě filtrování (hotel, typ pokoje, chybějící příspěvek, volitelná položka, ...) a vyhledávání (jméno, číslo daňového dokladu, ...). Jak mám takový výpis řešit? Napadá mě jen: 1. V základu si vytáhnout základní informace o účastníkovi a ke každému pak v PHP v cyklu doplnit ostatní položky (=pomalý výpis, ale jednodušší a rychlejší filtrování) 2. Pokusit se sestavit dotaz, který by vše vrátil v jednom výsledku (=použití spojení velkého množství tabulek, několika poddotazů = pomalé, nepřehledný dotaz) Jak byste takovýto problém řešili vy? Diky Zjednodušený popis částí db: acc_hotel: //seznam hotelu ID, nazev, ... acc_room: //seznam dostupnych pokoju ID, ID_hotel, nazev, ... acc_day: //seznam moznych dnu ubytovani ID, ID_room, datum, ... optionals: //seznam volitelnych polozek ID, nazev registrations //seznam registraci ID, jmeno, ... reg_acc: //objednani daneho pokoje na konkretni den ID_reg, ID_acc_day, ... reg_optionals: //propojeni s tbl optionals - urcuje, zda ma ucastnik danou volitelnou polozku ID_reg, ID_optional, ... texts: //prednasky ucastniku ID, ID_reg, nazev, ... |
||
Časová prodleva: 3 dny
|
|||
BigBear Profil |
#2 · Zasláno: 29. 4. 2011, 10:39:32
Já bych si asi vytvořil pohled a z něho pak data tahal. Ale záleží na tom, jak to pak bude rychlé - to chce vyzkoušet. Nedávno jsem takové spojení dělal na asi milion a pul zaznamech a je to docela pomalé i s jednoduchým filtrováním (ale pro mě to byla jediná možnost). Prostě záleží na tom. Vyzkoušel bych vytvořit pohled, protože práce nad ním je pak přehledná - navíc pro takové účely jsou pohledy určené, a vyzkoušel, jak to bude rychlé.
|
||
blaaablaaa Profil |
#3 · Zasláno: 29. 4. 2011, 10:48:08
BigBear:
Díky za odpověď. Pohled by vyřešil bohužel jen tu jednodušší část, ale ve chvíli, kdy mám data ve vztahu m:n, by mi to ničemu nepomohlo (navíc je tam potřeba pokročilejší filtrování, např. účastník nemá v žádném dni konání konference daný hotel apod., které nevím jak jinak, než cyklem, řešit). Ještě bych mohl vytvořit proceduru, která by ale měla stejný problém (tzn. v cyklu bych musel ověřovat jednotlivé filtry apod.) |
||
Kcko Profil |
#4 · Zasláno: 29. 4. 2011, 11:06:15
Zvolil bych složitější dotaz. Nepřehledné to být nemůže pokud budete správně odsazovat.
Pomalé to snad také nebude pokud dobře oindexujete tabulky. Případně zvolit variantu složitějšího dotazu a poté série několika jednoduchých pro vytvoření rejstříků. Tj. 1/ Dotaz na data o uživateli a základní věci 2/ plus kde se registruje, co si registruje ty už nemusí být součástí prvního Selectu. |
||
blaaablaaa Profil |
#5 · Zasláno: 29. 4. 2011, 11:17:27
Kcko:
U složitějšího dotazu mi jde především o to, že nedokážu sestavit správný poddotaz např. pro filtr "účastník nemá v žádném dni konání konference daný hotel" (tzn. v tabulce reg_acc nesmí být u dané registrace žádný z výčtu několika ID_acc_day) a nejsem si jistý, že něco takového v jednom dotazu udělat jde. |
||
blaaablaaa Profil |
#6 · Zasláno: 29. 4. 2011, 11:19:20
Ještě doplním, že tento výpis je pouze pro administraci, kterou ve většině případů bude používat jen jeden člověk najednou.
|
||
Časová prodleva: 13 let
|
0