Autor Zpráva
kukweb
Profil
ahoj,

byl bych rad, kdby nekdo poradil jak propojit dve mysql tabulky.

CREATE TABLE `mail` (
  `id` int(11) NOT NULL auto_increment,
  `email` varchar(30) collate utf8_czech_ci NOT NULL default '',
  `rand_chars` varchar(30) collate utf8_czech_ci NOT NULL default '',
`meno` varchar(30) collate utf8_czech_ci NOT NULL default '',
`overeno` varchar(3) collate utf8_czech_ci NOT NULL default '',
`odeslano` varchar(3) collate utf8_czech_ci NOT NULL default '',
`sledovat` varchar(4) collate utf8_czech_ci NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci ;




CREATE TABLE `dvd` (
  `id` int(11) NOT NULL auto_increment,
  `dvd_jmeno` varchar(30) collate utf8_czech_ci NOT NULL default '',
  `dvd_vydavate` varchar(30) collate utf8_czech_ci NOT NULL default '',
`date` varchar(12) collate utf8_czech_ci NOT NULL default '',
 `dvd_info` varchar(30) collate utf8_czech_ci NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci ;


tak nejak jsem je vytvoril.

A ted bych rad, udelal ze kdyz dnesni datum se bude = date (to je datum vydani dvd) z tabulky dvd
a urcite e-mail bude sledovat ID dvd ( to je zapsano v tom sledovat)
tak aby mu to poslalo e-mail pokud jeho e-mail je overeny.

Na me je toto nejak moc :(

Snad jsem to popsal rozumne
kukweb
Profil
nasel jsem tento clanek

http://www.mikajik.info/vyvoj-php-sql/mysql-cizi-klice.html

CREATE TABLE `join_dvd_mail` (

`dvd_id` int(5) NOT NULL,

`dvd_date` int(12) NOT NULL,

`dvdj_jmeno` int(30) NOT NULL,

`mail_email` int(30) NOT NULL,

`mail_overeno` int(3) NOT NULL,

`mail_odeslano` int(3) NOT NULL,

KEY `fk_dvd_id` (`dvd_id`),

KEY `fk_dvd_date` (`dvd_date`),

KEY `fk_dvdj_jmeno` (`dvdj_jmeno`),

KEY `fk_mail_email` (`mail_email`),

KEY `fk_mail_overeno` (`mail_overeno`),

KEY `fk_mail_odeslano` (`mail_odeslano`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;



ALTER TABLE `join_dvd_mail`

ADD CONSTRAINT `fk_dvd_id`

FOREIGN KEY(`dvd_id`) REFERENCES dvd(id)

ON UPDATE CASCADE ON DELETE RESTRICT;



ALTER TABLE `join_dvd_mail`

ADD CONSTRAINT `fk_dvd_date`

FOREIGN KEY(`dvd_date`) REFERENCES dvd(date)

ON UPDATE CASCADE ON DELETE CASCADE;


ALTER TABLE `join_dvd_mail`

ADD CONSTRAINT `fk_dvdj_jmeno`

FOREIGN KEY(`dvdj_jmeno`) REFERENCES dvd(dvd_jmeno)

ON UPDATE CASCADE ON DELETE CASCADE;


ALTER TABLE `join_dvd_mail`

ADD CONSTRAINT `fk_mail_email`

FOREIGN KEY(`mail_email`) REFERENCES mail(email)

ON UPDATE CASCADE ON DELETE CASCADE;



ALTER TABLE `join_dvd_mail`

ADD CONSTRAINT `fk_mail_overeno`

FOREIGN KEY(`mail_overeno`) REFERENCES mail(overeno)

ON UPDATE CASCADE ON DELETE CASCADE;


ALTER TABLE `join_dvd_mail`

ADD CONSTRAINT `fk_mail_odeslano`

FOREIGN KEY(`mail_odeslano`) REFERENCES mail(odeslano)

ON UPDATE CASCADE ON DELETE CASCADE;


je to o dost snadnejsi, ale stejne mam nekde chybu.

Jsem zacatecnik :( poradi nekdo pls.
TSD
Profil *
A ted bych rad, udelal ze kdyz dnesni datum se bude = date (to je datum vydani dvd) z tabulky dvd a urcite e-mail bude sledovat ID dvd ( to je zapsano v tom sledovat) tak aby mu to poslalo e-mail pokud jeho e-mail je overeny.


Pěkné. A teď ještě jednou a česky. Pokus se používat diakritiku a interpunkci, není to nic bolestivého.
Ten tvůj první příspěvek jsem pochopil tak, že bys něco potřeboval, i když nevím co. Ten druhý jsem nepochopil vůbec.
kukweb
Profil
to jsme dva :)
BetaCam
Profil
První sice chápu dokonce i chceš, ale máš tam divné typy sloupců např varchar u date či odeslano varchar(3) bylo by možná dobré uvést i nějaké data z obou tabulek s nějakými testovacími daty jinak se nedá dost dobře odhadnout SQL dotaz.

Ten tvůj druhej post je pro InnoDB a ne pro MyISAM jako je tvůj první post tak si vyber jakou db budeš vlastně používat.
jozin
Profil *
sice jsem moc necet co presne potrebujes, ale pokud pouzijes MyISAM, tak relace neudelas, tz. pri CREATE tabulek dej InnoDB, a pak uz ti ty relace pujdou vytvorit

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:

0