Autor Zpráva
tomáš
Profil *
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
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';
To Client.Parse by se udělalo následně.
__construct
Profil
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 *
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
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 *
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
[#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
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 *
Nox:
díky za typ, nemám nejmenší tušení o co jde, takže jdu googlit ;-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0