Autor Zpráva
Tomáš Pavka
Profil *
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 *
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 *
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 *
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 *
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 *
<select>
<option value="56">Brno
<option value="42">Břeclav
Tomáš Pavka
Profil *
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 *
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 *
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.

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: