2012-03-12 6 views
0

私はこのMySQLクエリを持っていますが、構文は正しいですが、ビューを見たいときは、mysqlプロセスは100%になります。MySQLクエリがループに入ります

CREATE OR REPLACE VIEW tx_oriconvenios_consultas AS 
     SELECT conv.*, tipo.descripcion AS tipo_convenio, uni.nombre AS n_universidad, ciu.nombre AS n_ciudad, pais.cn_short_es AS n_pais, COUNT(hist.estado) AS n_estado 
     FROM tx_unalori_convenio AS conv 
     LEFT JOIN tx_unalori_historico as hist 
     ON conv.uid = hist.convenio 
     INNER JOIN tx_unalori_tipoconv as tipo 
     ON conv.tipoconv = tipo.uid 
     INNER JOIN tx_unalori_universidad as uni 
     ON conv.universidad = uni.uid 
     INNER JOIN tx_unalori_ciudad as ciu 
     ON ciu.uid=uni.uid_ciudad 
     INNER JOIN static_countries as pais 
     ON pais.cn_iso_3 = ciu.pais 
     GROUP BY conv.uid 

は私が削除した場合:

INNER JOIN static_countries as pais 
     ON pais.cn_iso_3 = ciu.pais 

か:

LEFT JOIN tx_unalori_historico as hist 
    ON conv.uid = hist.convenio 

は、その後、私はビューに入り、レジスタを見ることができます。

理由を理解できません。

私は本当にいくつかの説明を謝ります。尋ねた人のために


、これはstatic_countriesの構造である:tx_unalori_historicoの

CREATE TABLE IF NOT EXISTS `static_countries` (
    `uid` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `pid` int(11) unsigned DEFAULT '0', 
    `deleted` tinyint(4) NOT NULL DEFAULT '0', 
    `cn_iso_2` char(2) DEFAULT '', 
    `cn_iso_3` char(3) DEFAULT '', 
    `cn_iso_nr` int(11) unsigned DEFAULT '0', 
    `cn_parent_tr_iso_nr` int(11) unsigned DEFAULT '0', 
    `cn_official_name_local` varchar(128) DEFAULT '', 
    `cn_official_name_en` varchar(128) DEFAULT '', 
    `cn_capital` varchar(45) DEFAULT '', 
    `cn_tldomain` char(2) DEFAULT '', 
    `cn_currency_iso_3` char(3) DEFAULT '', 
    `cn_currency_iso_nr` int(10) unsigned DEFAULT '0', 
    `cn_phone` int(10) unsigned DEFAULT '0', 
    `cn_eu_member` tinyint(3) unsigned DEFAULT '0', 
    `cn_address_format` tinyint(3) unsigned DEFAULT '0', 
    `cn_zone_flag` tinyint(4) DEFAULT '0', 
    `cn_short_local` varchar(70) DEFAULT '', 
    `cn_short_en` varchar(50) DEFAULT '', 
    `cn_uno_member` tinyint(3) unsigned DEFAULT '0', 
    `cn_short_es` varchar(50) NOT NULL DEFAULT '', 
    PRIMARY KEY (`uid`), 
    UNIQUE KEY `uid` (`uid`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=250 ; 

そして、この:

CREATE TABLE IF NOT EXISTS `tx_unalori_historico` (
    `uid` int(11) NOT NULL AUTO_INCREMENT, 
    `pid` int(11) NOT NULL DEFAULT '0', 
    `tstamp` int(11) NOT NULL DEFAULT '0', 
    `crdate` int(11) NOT NULL DEFAULT '0', 
    `cruser_id` int(11) NOT NULL DEFAULT '0', 
    `deleted` tinyint(4) NOT NULL DEFAULT '0', 
    `hidden` tinyint(4) NOT NULL DEFAULT '0', 
    `be_users` int(11) NOT NULL DEFAULT '0', 
    `convenio` int(11) NOT NULL DEFAULT '0', 
    `estado` int(11) NOT NULL DEFAULT '0', 
    `observaciones` text NOT NULL, 
    PRIMARY KEY (`uid`), 
    KEY `parent` (`pid`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3810 ; 
+1

をtx_unalori_ciudad.paisたが、それは余分な情報を与えず、 'static_countries'と' tx_unalori_historico'完全な定義 – zerkms

+0

を表示します? – Jay

+0

説明を置くことは同じです、無応答とプロセスは100%です。 – Memochipan

答えて

1

おかげで@ypercube。あなたは、クエリの前にEXPLAINキーワードを入れている場合

問題がstatic_countries.cn_iso_3するインデックスキーを追加し解決し、

関連する問題