Autor Zpráva
Harik
Profil *
Zdravím, mám dvě tabulky v MySQL akce a ucinkujici. V akcích je místo konání, čas.... a taky odkaz na hudebni skupinu která tam učinkuje. Jenže při zapisování akce do DB tam skrz roletku vyberu učinkující skupinu a protože každý nezná web dané skupiny tak tam nemůžu dát políčko web. V ucinkujici je nazev a web. Potřebuju to nějak propojit ať když vyberu skupinu tak ve vypisu se mi zobrazi odkaz na www stranku dané skupiny. Mohli byste mě nějak popostrčit prosím...
tiso
Profil
Harik - vzťah medzi tabuľkami akce:ucinkujici je m:n, nie 1:n (alebo 1:1), takže potrebuješ ešte prepojovaciu tabuľku akce_ucinkujici
Okrem toho skús to napísať ešte raz, pretože ti nerozumiem. Stále totiž píšeš iba o databáze, tak neviem akú roletku máš na mysli a čo vlastne chceš dosiahnuť.
Harik
Profil *
tiso
Ta roletka se nazývá myslím selectbox, ale to je asi jedno. Chtěl bych docílit toho, že všechno ohledně akcí (tj. datum, čas, místo....) vypíšu z tabulky akce a web skupiny která tam bude účinkovat vypíšu z tabulky ucinkujici.
Kajman_
Profil *
Tak ukažte, jak to vypisujete, měl by stačit jednoduchý join.
Harik
Profil *
Kajman_
"select * from akce where schvaleno=1 and datum >= curdate() order by datum"
mělo by to stačit, ale pokud né rád přidám celý kód.
Kajman_
Profil *
select a.*, s.web webskupiny from akce a left join skupina s on a.skupina_id=s.skupina_id where a.schvaleno=1 and a.datum >= curdate() order by a.datum
Harik
Profil *
Kajman_
Mohl bych prosím vás poprosit o malý rozbor. Za co mám co dosadit. Není mi to moc jasné. Děkuji.
Harik
Profil *
Pozkoušel jsem snad všechno, třeba ještě pomůže to vypisuji takhle:
<?echo $zaznam["ucinkujici"]?>
Mám ještě něco změnit?
Vlastně bych to chtěl změnit do takové podoby:
<a href="<?echo $zaznam["webskupiny"]?>"><?echo $zaznam["skupina"]?></a>

Pořád ne a ne jít to.
Kajman_
Profil *
Z tabulky skupina se vypisuje jen web, pokud toužíte po dalších sloupečcích, tak si je tam přidejte. My jejich názvy neznáme, tak se nedá radit.
Harik
Profil *
Kajman_
Já bych potřeboval vypsat všechny položky z tabulky akce, a zároveň z tabulky ucinkujici jenom web ale závislý na sloupci skupina z 1.tabulky.
Polopatě: Tabulka akce- čas: blabla
- datum: blabla
- skupina: Noname
Tabulka ucinkujici- nazev: Noname
- mikroregion: blabla
- web: www.nonane.sk

Když se skupina z 1.tabulky rovná Noname tak chci aby to s 2.tabulky vypsalo web skupiny která má stejný název.
Harik
Profil *
Kajman_
Já asi neumím dobře zformulovat dotaz. Potřeboval bych ať vypíšu všechno z tabulky "akce" a zároveň podle vybrané skupiny web z tabulky "ucinkujici".
Kajman_
Profil *
Tak se trošku snažte, stačí to první řešení poupravit dle Vašich názvů.

select a.*, s.web webskupiny
from akce a left join ucinkujici s on a.skupina=s.nazev
where a.schvaleno=1 and a.datum >= curdate()
order by a.datum


Jen v tom prvním se tiše předpokládalo, že na skupiny máte číselník. Spojování tabulek přes jejich název je fuj.
Harik
Profil *
Kajman_
Děkuju, ale další problém nastává tím, že mám víc skupin. Vypíšu dejme tomu 4 skupiny:
<a href="<?echo $zaznam["www"]?>" target="blank"><?echo $zaznam["skupina"]?></a>
        <a href="<?echo $zaznam["www"]?>" target="blank"><?echo $zaznam["skupina2"]?></a>
        <a href="<?echo $zaznam["www"]?>" target="blank"><?echo $zaznam["skupina3"]?></a>
        <a href="<?echo $zaznam["www"]?>" target="blank"><?echo $zaznam["skupina4"]?></a>

MySQL dotaz vypadá takhle:
select a.*, s.www www from akce a left join skupiny s on a.skupina=s.nazev where a.schvaleno=1 and a.datum >= curdate() order by a.datum

No a problém je v tom, že mě kterýkoliv z těch 4 odkazů hodí akorát na tu stránku skupiny 1. co je zadaná.
Např.
select a.*, s.www www from akce a left join skupiny s on (a.skupina=s.nazev and a.skupina2=s.nazev) where a.schvaleno=1 and a.datum >= curdate() order by a.datum
nefunguje.
Harik
Profil *
A jde to vůbec? Pořád hledám a nic.
Kajman_
Profil *
Pokud je více skupin, tak se dávají do více řádků do další tabulky. Dávat je do jedné do více sloupců je fuj. Tak pak totiž musíte připojit tabulky se skupinami pro každý sloupeček znovu, což nemusí vždy db stroj rozdýchat. Přečtěte si nějaké základy návrhu sql struktur tabulek. Ušetříte tím spoustu nervů a času sobě i ostatním.
Harik
Profil *
Takže asi nejjednodušší bude každou tu skupinu dávat zvlášť do tabulky že? Není to ale zbytečné? Přibude třeba dalších 15 tabulek.. Takhle jak to mám rozvržené teď tak to nijak fungovat nebude? Každopádně díky že se se mnou tady vůbec otravujete.
Kajman_
Profil *
Jednu tabulku s akcemi.
Jednu tabulku se skupinami
Jednu tabulku na libovolný počet vazby akce->skupina.

Pak na akci může být třeba dvacet skupin a není problém takovou informaci uložit. Nebo třeba dvacet tisíc skupin - stále to půjde a bude to mít hlavu a patu.

Viz. již příspěvek č. [#2]
Harik
Profil *
Kajman_
Jak by tedy měla asi vypadat ta třetí tabulka? Mám tam normálně dát např. všechny řádky s tabulky akce ohledně skupin a do tabulky skupiny řádek
nazev
a www.
Nemůžu najít žádný pěkně srozumitelný članek o tomhle tom.
Harik
Profil *
Pěkný článek na můj problém.

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: