以下查询可以正常工作 - 只要网址集中在美国50个州中的一个州(例如MySite / World / Arizona)。
SELECT GG.N, GG.IDArea MyID,
GG.Name GName, GG.FIPS, GG.NameAlph, GG.Type, GG.**IDParent**, GG.Parent, GG.IDReg, GG.Pre, GG.Post, GG.CIA,
GP.IDArea GPIDArea, GP.IDParent2, GS.N, GS.IDArea SymArea, GS.URL, GS.PostURL, GS.Unique, GS.Title, GS.Subtitle, GS.MyKind2, GS.Symbol, GS.Latin, GS.Desig, GS.DesigGen, GS.DesigGroup, GS.Date, GS.Dupe,
GM.Motto, GM.Language, ART.ID, ART.PostURL, ART.Article
FROM gw_geog GG
LEFT JOIN gs GS ON GS.IDArea = GG.IDArea
LEFT JOIN gw_geog_par2 GP ON GP.IDArea = GG.IDArea
LEFT JOIN gs2_motto GM ON GM.Motto = GS.Symbol
LEFT JOIN gs_articles_world_**usa** ART ON ART.ID = GS.IDArea AND ART.PostURL = GS.PostURL
WHERE GG.Name = :MyURL AND
ORDER BY GS.N
但是,它不适用于MySite / World / Japan。问题是数据库表gs_articles_world_usa。它是一系列表格中的一个,最后三个字母代表一个国家的父母。 (在这种情况下,日本的父母是Eurasia,缩写为eur。)
幸运的是,这些父ID存储在其中一个表中 - gw_geog,在字段IDParent中。所以我应该能够将gs_articles_word_usa更改为gs_articles_world_ $ IDParent。
显而易见的问题是$ IDParent - $ IDParent = $ row ['IDParent']的值 - 在查询完成执行之后才能从数据库中提取。
显而易见的解决方案是在此查询之前创建一个单独的查询,以便提取$ IDParent的值。但是,我怀疑可能有某种方法来修改我现有的查询来完成同样的事情。有什么建议吗?
P.S。存储在字段IDParent中的一些值包括usa,can(加拿大),na(北美),sa(南美),eur(欧亚大陆),afr(非洲),jpn(日本); pac,atl,ino(太平洋,大西洋和印度洋)和reg(地区)。
CREATE TABLE gw_geog
(
N
mediumint(3)NOT NULL AUTO_INCREMENT,
IDArea
varchar(7)COLLATE latin1_general_ci NOT NULL DEFAULT'',
ISO2
varchar(6)COLLATE latin1_general_ci DEFAULT NULL,
ISON
int(3)DEFAULT NULL,
FIPS
char(2)COLLATE latin1_general_ci DEFAULT NULL,
Name
varchar(44)COLLATE latin1_general_ci NOT NULL DEFAULT'',
NameAlph
varchar(44)COLLATE latin1_general_ci NOT NULL DEFAULT'',
Type
char(3)COLLATE latin1_general_ci NOT NULL DEFAULT'',
IDParent
char(4)COLLATE latin1_general_ci DEFAULT NULL,
Parent
varchar(22)COLLATE latin1_general_ci DEFAULT NULL,
IDParent2
char(4)COLLATE latin1_general_ci DEFAULT NULL,
Parent2
varchar(22)COLLATE latin1_general_ci DEFAULT NULL,
IDReg
varchar(7)COLLATE latin1_general_ci DEFAULT NULL,
Pre
varchar(44)COLLATE latin1_general_ci DEFAULT NULL,
Post
varchar(44)COLLATE latin1_general_ci DEFAULT NULL,
CIA
tinyint(1)DEFAULT NULL,
G1
tinyint(1)NOT NULL DEFAULT'1',
PRIMARY KEY(N
),
KEY Parent
(Parent
),
KEY IDReg
(IDReg
),
KEY IDArea
(IDArea
),
KEY IDParent
(IDParent
),
KEY Name
(Name
)
)ENGINE = MyISAM AUTO_INCREMENT = 549 DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci