Autor | Zpráva | ||
---|---|---|---|
Harik Profil * |
#1 · Zasláno: 7. 1. 2009, 17:39:03
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 |
#2 · Zasláno: 7. 1. 2009, 17:55:04
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 * |
#3 · Zasláno: 7. 1. 2009, 21:01:47
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 * |
#4 · Zasláno: 7. 1. 2009, 21:09:40
Tak ukažte, jak to vypisujete, měl by stačit jednoduchý join.
|
||
Harik Profil * |
#5 · Zasláno: 7. 1. 2009, 21:22:39
Kajman_
"select * from akce where schvaleno=1 and datum >= curdate() order by datum" |
||
Kajman_ Profil * |
#6 · Zasláno: 7. 1. 2009, 21:34:59
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 * |
#7 · Zasláno: 7. 1. 2009, 21:58:36
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 * |
#8 · Zasláno: 8. 1. 2009, 16:27:48
Pozkoušel jsem snad všechno, třeba ještě pomůže to vypisuji takhle:
<?echo $zaznam["ucinkujici"]?> 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 * |
#9 · Zasláno: 8. 1. 2009, 16:32:14
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 * |
#10 · Zasláno: 8. 1. 2009, 16:45:35
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 * |
#11 · Zasláno: 10. 1. 2009, 21:48:25
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 * |
#12 · Zasláno: 10. 1. 2009, 22:15:04
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. |
||
Časová prodleva: 18 dní
|
|||
Harik Profil * |
#13 · Zasláno: 28. 1. 2009, 22:09:11
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 |
||
Harik Profil * |
#14 · Zasláno: 29. 1. 2009, 14:47:20
A jde to vůbec? Pořád hledám a nic.
|
||
Kajman_ Profil * |
#15 · Zasláno: 29. 1. 2009, 15:42:44
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 * |
#16 · Zasláno: 29. 1. 2009, 16:10:43
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 * |
#17 · Zasláno: 29. 1. 2009, 16:20:29
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 * |
#18 · Zasláno: 29. 1. 2009, 17:14:44
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 Nemůžu najít žádný pěkně srozumitelný članek o tomhle tom. |
||
Harik Profil * |
#19 · Zasláno: 29. 1. 2009, 17:20:21
Pěkný článek na můj problém.
|
||
Časová prodleva: 16 let
|
0