
Mysql dotaz složitější - jde to ?
Zdar, mám tu jednu takovou složitost. Chtěl bych poskládat dotaz takto: vybere z tabulky a všechyn sloupce místo toho aby vrátil číslo (v jednom sloupci, v druhém mám druhy jeden sloupeček id druhy názvy) by vrátil název toho druhu. Jde to, nebo se to musí dělat na několikrát ? Díky za pomoc.
myslis klasicky inner join dvoch tabuliek? alebo to skus popisat trochu zrozumitelnejsie - tvoj popis je s prepacenim trochu po madarsky.
No takže ja som si tú Tvoju zlátaninu prečítal asi 3x, ale aj tak som presne nepochopil čo chceš... Skús to ešte raz zrozumiteľnejšie/názornejšie...
Složitější? Tohle je úplný základ, kup si nějakou knížku.
Zkusím ještě jednou. Mám 2 tabulky, v jedné nějaké data, v druhé jsou kategorie očíslované id a název. Potřebuju, aby mysql vrátila místo sloupce s číslama dosazený do té drugé tabulky.
Příklad:
zanry
id nazev
1 sportovní
2 dokumentární
knihy
zanr název
2 Shakespeare
1 Lind
Při obyčejném selectu by mi Myqsl vrátil v prvním řádku 2 a shakespeare. Dá se to poskládat aby vracela dokumentární a Shakespeare? (jen jako příklad ;))
Skúšal si aplikovať odpovede, ktoré si dostal?
Hurá
po troše trápení (12 min) jsem to rozchodil. Můžeš mi to vysvětlit ? Jak to chápu:
Písmená k a z sú aliasy - pomenoval som nimi tabuľky knihy a zanry tým, že som napísal from knihy k a join zanry z. Šlo by to aj bez nich, ale to by sa človek upísal v prípade, že by názvy tabuliek boli dlhšie.
Napr. bez aliasov by to vyzeralo takto:
a este doplnim, pred nazvy stlpcov sa pisu nazvy tabuliek (pripadne spominane aliasy) hlavne preto, ze sa moze stat, ze rovnaky nazov stlpca moze byt v oboch tabulkach.
PS: vobec nie je zle si nastudovat nejaky manual. Aspon na taketo zaklady ohladne selectov. Prikaz select ma mnozstvo variacii pouzitim klauzul a joinov.
Tak díky hlavně losovi
. Asi si budu muset koupit knihu mysql/php, protože čím dělám složitější stránky, tím víc zjištuji, že toho zas tak moc neumím. Díky všem.
lamp.fornax.sk - pekný článok, skús si prečítať
Pro inspiraci jeden z mých běžných dotazů (plně funkční!):
zaujimave, ale obavam sa, ze ak by v tom chcel niekto iny (mimo teba) urobit upravu ci zmenu, tak nema sancu a skorej napise novy select.
kebyze po niekom najdem v praci takyto kod, tak mu odrapim ruky. je to dost neprehladne (hlavne kvoli tym substituciam pomocou selectov) a zbytocne sa tam pouziva OUTER. verim, ze pouzitim funkcii, view (a pokial je to MS SQL tak aj with) by sa tento select zmestil na par riadkov.
Není tady prostor abych zde rozpitvával zadání. Spojení tabulek je pak celkem logické a ty vložené selecty IMHO to naopak zjednodušují pro jiného, protože je přesně na místě ucelený select. Je to názornější, než dělat nejprve pomocné přechodné tabulky. Původně to bylo určeno pro MS SQL, cílem byla tisková sestav v Delphi. Samozřejmě, není to jediné možné řešení a věřím, že co programátor, to jiné neméně dobré řešení.
Výsledok zlého návrhu databázy...
Ani taky ne. Ne vždy jde navrhnout databáze "na všechno". Návrh databáze jsem nedělal já. Je to z inventury nároků na restituci, kde bylo strašlivě moc variant - měl pole, dali za to barák + peníze nebo les, nemovitosti, prostě kvanta možností a jejich kombinace. Tento obří select vyhledával chyby v databázi tedy nepovolené kombinace nároků a plnění restitucí. Vnitřní selecty vytahují chybné věty a "obalový" select to vhodně seřadí a vysoučtuje.