Autor | Zpráva | ||
---|---|---|---|
Kateřina Profil * |
#1 · Zasláno: 27. 6. 2011, 23:56:43
Ahojte,
mám tady jednu aplikaci, kterou bych si ráda spustila. Udělala jsem si výpis států, což bylo jednoduché, ale vůbec nevím, jak udělat výpis měst dle vybraného státu, tj. vemu nějaký stát a potřebuji k němu vypsat dané města, tj. CITY. Posílám Vám radši celé tabulky. Za mySQL dotaz Vám moc děkuji DROP TABLE IF EXISTS `city`; CREATE TABLE `city` ( `id` int(11) NOT NULL auto_increment, `slug` varchar(255) NOT NULL, `title` varchar(255) NOT NULL, `latitude` varchar(255) NOT NULL, `longitude` varchar(255) NOT NULL, `state_id` int(11) NOT NULL, `country_code` char(2) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `slug` (`slug`), KEY `state_id` (`state_id`,`country_code`), KEY `country_code` (`country_code`) ) ENGINE=MyISAM AUTO_INCREMENT=64322 DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `state`; CREATE TABLE `state` ( `id` int(11) NOT NULL, `slug` varchar(255) NOT NULL, `title` varchar(255) NOT NULL, `country_code` char(2) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `slug` (`slug`), KEY `country_code` (`country_code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
||
Audio Profil |
#2 · Zasláno: 28. 6. 2011, 00:49:48
Předně si myslim, že country_code by měl být pouze v tabulce state, jinak dochází k duplikaci dat (když budeš měnit country_code u nějakého státu, tak ho bude muset změnit i u všech měst daného státu a to je práce navíc).
K dotazu: pokud máš přímo ID libovolného státu, stačí použít dotaz: SELECT * FROM city WHERE state_id = 1 Máš-li k dispozici jinou informaci o státu, například jen country_code, použij dotaz, který spojí tabulky podle ID státu: SELECT * FROM city c JOIN state s ON c.state_id = s.id WHERE s.country_code = 'cs' Druhý jmenovaný dotaz pracuje tak, že spojí města se státy podle ID státu a následně vybere jen města, jejichž stát má zadaný country_code. |
||
Časová prodleva: 13 let
|
0