Autor | Zpráva | ||
---|---|---|---|
Tomáš Pavka Profil * |
#1 · Zasláno: 14. 2. 2011, 18:09:37
select a.*, c.www www from akce a left join cimbalovky c on a.cimbalovka=c.nazev where a.schvaleno=1 and a.datum >= curdate() order by a.datum Dobrý podvečer, do sql dotazu nahoře bych potřeboval spojit další dvě tabulky a to obce a kraje. Potřebuju aby když někdo při vkládání zadá obec tak při výpisu k obci dohodí automaticky kraj. Tabulky jsou: Obce - id, nazev, kraj Kraj - id, nazev Popostrčí mě prosím někdo jak na to? |
||
Kajman_ Profil * |
#2 · Zasláno: 15. 2. 2011, 08:54:12
select a.*, c.www www, o.nazev obec, k.nazev kraj from akce a left join cimbalovky c on a.cimbalovka = c.nazev left join obce o on a.id_obce = o.id left join kraje k on o.kraj = k.id where a.schvaleno = 1 and a.datum >= curdate() order by a.datum A místo curdate je lepší dát datum např. z php, aby se mohla využít sql cache. |
||
Tomáš Pavka Profil * |
#3 · Zasláno: 15. 2. 2011, 09:59:12
Kajman:
Díky moc, akorát mám ještě jeden problém. U tabulky akce mi chyběl řádek id_obce, tak jsem ho dodělal, ale nevím jak při zadávání akcí, do tohoto řádku id dané obce doplnit, tak aby to sedělo podle té tabulky obce. |
||
Kajman_ Profil * |
#4 · Zasláno: 15. 2. 2011, 10:33:12
A myslíte, že uživatelé budou zadávat přesný název, který máte nachystaný v tabulce obce? Pak by stačilo změnit podmínku na a.nazev_obce=o.nazev (plus by se hodil index na sloupci nazev u tabulky obce).
Nebylo by lepší uživatelům nachystat listbox (<select>), kde si mohou najít obec podle jména a Vy dostanete id_obce? |
||
Tomáš Pavka Profil * |
#5 · Zasláno: 15. 2. 2011, 11:04:30
Kajman:
Přesně tak to mám. Mám select. Akorát mě nenapadá jak jednoduše získat to id_obce do tabulky akce. |
||
Kajman_ Profil * |
#6 · Zasláno: 15. 2. 2011, 11:08:36
<select> <option value="56">Brno <option value="42">Břeclav |
||
Tomáš Pavka Profil * |
#7 · Zasláno: 15. 2. 2011, 11:23:27
Ten select mám takový:
<?php $array = array( 'Zlínský' => array( 'město1' => 'město1', 'město1' => 'město1', 'město1' => 'město1', 'město1' => 'město1', ), 'Jihomoravský' => array( 'město1' => 'město1', 'město1' => 'město1', 'město1' => 'město1', 'město1' => 'město1', 'město1' => 'město1', ), ), 'Další' => array( 'Česká republika' => 'Česká republika', 'Evropa' => 'Evropa', 'Amerika' => 'Amerika', 'Asie' => 'Asie', 'Austrálie a Nový Zéland' => 'Austrálie a Nový Zéland', ), ); $select = "\n" . '<select name="obec" id="obec">'; $select .= "\n" . '<option value="">Vyberte obec</option>'; foreach($array as $region => $mikro) { $select .= "\n\t" . '<optgroup label="' . $region . '">'; foreach($mikro as $klic => $nazev) { $selected = ''; if((!empty($_POST['obec'])) && ($_POST['obec'] == $klic)) { $selected = ' selected'; } $select .= "\n\t\t" . '<option value="' . $klic . '"' . $selected . '>' . $nazev . '</option>'; } $select .= "\n\t" . '</optgroup>'; } $select .= "\n" . '</select>'; echo $select; ?> |
||
Tomáš Pavka Profil * |
#8 · Zasláno: 15. 2. 2011, 12:08:19
Já se omlouvám, připadám si jak idi*t :-) . id_obce není vůbec potřeba, všechno se dá vyřešit skrz název obce, protože ten bude vždycky stejný když to uživatel vybírá se selectu.
|
||
Pavlii Profil * |
#9 · Zasláno: 15. 2. 2011, 15:58:31
Mám podobný dotaz a prosím o podrobnější vysvětlení.
Mám 2 tabulky: CREATE TABLE `zabery` ( `id` int(6) NOT NULL auto_increment, `projekt` int(5) NOT NULL, `povoleni` set('a','n') NOT NULL, `poradi` int(6) NOT NULL, `epizoda` varchar(50) NOT NULL, `klapka` varchar(50) NOT NULL, `rec_tc` varchar(20) NOT NULL, `popis` varchar(200) NOT NULL, `check` set('a','n') NOT NULL, `hodnoceni` set('1','2','3') NOT NULL, `nat_den` int(5) NOT NULL, `prostredi` varchar(60) NOT NULL, `datum` varchar(10) NOT NULL, `role` varchar(20) NOT NULL, `zdroj` varchar(50) NOT NULL, `format` varchar(50) NOT NULL, `asyn_tc` set('a','n') NOT NULL, `reel` int(3) NOT NULL, `ciszab` varchar(15) NOT NULL, `zaber_ozn` varchar(10) NOT NULL, `in_tc` int(6) NOT NULL, `out_tc` int(6) NOT NULL, `stav` varchar(50) NOT NULL, `fps` varchar(5) NOT NULL, `vytvoreno` varchar(16) NOT NULL, `zadal` varchar(50) NOT NULL, `zmena` varchar(16) NOT NULL, `zmenil` varchar(50) NOT NULL, `znacka` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=239 ; a tabulku CREATE TABLE `soubory` ( `ident` int(6) NOT NULL auto_increment, `projekt` int(6) NOT NULL, `zaber` int(6) NOT NULL, `poradi` int(6) NOT NULL, `nazev` varchar(100) NOT NULL, `pripona` varchar(10) NOT NULL, `umisteni` varchar(20) NOT NULL, `adresar` varchar(100) NOT NULL, KEY `id` (`ident`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=101 ; s tím, že z tabulky zabery potřebuji natáhnout všechna data z řádku a zárověň z tabulky soubory pouze ten řádek, který má stejné číslo projektu, záběru a v umístění obsahuje "title". Z tabulky zabery se musí natáhnout každý řádek bez ohledu na to, jestli v tabulce soubory bude nejaky titulni soubor. Prozatim jsem vyzkousel jen SELECT * FROM zabery LEFT JOIN soubory ON soubory.zaber = zabery.ciszab WHERE soubory.umisteni = 'title' ale stále to nedělá to, co bych chtěl :-( Prosím poraďte mi. |
||
Časová prodleva: 13 let
|
0