Autor | Zpráva | ||
---|---|---|---|
tomáš Profil * |
#1 · Zasláno: 22. 7. 2010, 09:32:57
Zdravím,
pokouším se sestavit dotaz do MySQL, měl by provádět následující: - vypsat tabulky z databáze 'data' začínající na 'item' - z každé tabulky vybrat řádek jehož hodnota sloupce 'name' = 'head' - vypsat 'Client.Parse(' + hodnotu sloupce 'value' u toho vybraného řádku + ');' v mysql se moc nevyznám, trochu jsem přišel do styku s .NETím LINQ, ale nic světoborného to fakt není. tam by se to (zhruba) zapsalo jako: from name,value from (show tables in data like 'item*') where name='head' select 'Client.Parse('+value+')' něco takovýho bych potřeboval i pro to mysql. měl by pro mě někdo nějakou radu? |
||
Joker Profil |
#2 · Zasláno: 22. 7. 2010, 10:35:31
tomáš:
Tohle nebude až tak jednoduché. „vypsat tabulky z databáze 'data' začínající na 'item'“ Tohle se dá zjistit z tabulky information_schema, nicméně takový požadavek obvykle ukazuje na špatný návrh databáze. Jakmile potřebujete indexovat (tj. máte něco1, něco2, něco3,…) tabulky v databázi nebo sloupce v tabulce, v drtivé většině případů je špatně návrh databáze. Takže úkol „Vybrat ze všech tabulek jejichž název začíná…“ je velmi podezřelý. Jinak v MySQL by se tedy asi z information_schema získaly skutečné názvy tabulek a program by potom v cyklu vybíral data z jednotlivých tabulek. Ale jak říkám, v první řadě bych překontroloval návrh databáze. Ten zbytek je snadný: SELECT name, value FROM tabulka where name='head'; |
||
__construct Profil |
#3 · Zasláno: 22. 7. 2010, 10:47:49
Tabulky z databáze data začínajúce na item:
SHOW TABLES FROM `data` LIKE 'item%'; Ale tiež sa prikláňam k názoru, že DB je zle navrhnutá - odporúčam preštudovať niečo o tzv. normalizácii |
||
tomáš Profil * |
#4 · Zasláno: 22. 7. 2010, 10:53:23
máte pravdu, také si s architekturou databáze lámu hlavu. jde o to, že já chci uložit něco takového:
Item '-Property (Name, Value, Extra) '-Property (Name, Value, Extra) '- ... napadlo mě namapovat to tak, že Item bude tabulka a properties budou řádky, s tím že Name,Value a Extra budou sloupce. další řešení je mít tabulky Items a Tabulku properties a pomocí indexů svázat několik properties k jednomu itemu. bude to ale dělat nepořádek v databázi. další věc je ta, že já potřebuji pořadí těch properties občas měnit a napadlo mě že to první řešení by bylo vhodnější, stačilo by řádky prohnat nějakým sortovacím algoritmem na základě nějakých kritérií. pokud budu mít všechny properties v jedné tabulce (properties všech itemů), bude to sortování mnohem déle trvat... |
||
nightfish Profil |
#5 · Zasláno: 22. 7. 2010, 10:57:25
tomáš:
„bude to ale dělat nepořádek v databázi.“ Ale né. „pokud budu mít všechny properties v jedné tabulce (properties všech itemů), bude to sortování mnohem déle trvat...“ To jsi vyzkoušel nebo si to jenom tak nějak myslíš? |
||
tomáš Profil * |
#6 · Zasláno: 22. 7. 2010, 11:01:04
nightfish:
nevyzkoušel, pravda. navíc databáze nebude žádný obr. díky všem za odpovědi, jdu překopat architekturu databáze. přeji příjemný den |
||
Alphard Profil |
#7 · Zasláno: 22. 7. 2010, 11:03:30
[#6] Ještě doplním, že u větších tabulek mohou výrazně pomoci indexy. Nevím, jakou velikost si představit pod "žádný obr".
|
||
Nox Profil |
#8 · Zasláno: 22. 7. 2010, 11:05:41
tomáš:
Nebude.... nemá to být něco jako Entity-Attribute-Value? Máš mít nezávislou tabulku s itema (Entity), pak tabulku co definuje vlastnosti (Attribute) a potom tabulku co sváže item s attributem o konkrétní hodnotě (VALUE) |
||
tomáš Profil * |
#9 · Zasláno: 22. 7. 2010, 11:19:36
Nox:
díky za typ, nemám nejmenší tušení o co jde, takže jdu googlit ;-) |
||
Časová prodleva: 14 let
|
0