繁体   English   中英

PHP & MySQL:复杂查询

[英]PHP & MySQL: complex queries

哪种方法更好:

  1. PHP发送复杂的选择查询,或者;
  2. MySQL创建它的视图、函数和存储过程并请求它们?

例如,我有这些表:

  1. 语言(ID、代码、名称);
  2. 国家(ID、代码、名称);
  3. 区域(id,ctry_id,代码,名称);
  4. 城市(id,rgn_id,代码,名称);
  5. 公司(id、cty_id、增值税、电话、电子邮件、网址);
  6. cnt_lng (id, ctry_id, lng_id, translate_name);
  7. rgn_lng (id, rgn_id, lng_id, translate_name);
  8. cty_lng (id, cty_id, lng_id, translate_name);
  9. cmp_lng(id、cmp_id、lng_id、名称、信息)。

我想选择这些信息:

国家、地区、城市和公司详细信息按定义的语言(例如en

这是我的查询:

SELECT
  ctry_lng.translated_name,
  rgn_lng.translated_name,
  cty_lng.translated_name,
  cmp.phone,
  cmp.email,
  cmp.url,
  cmp_lng.name,
  cmp_lng.info
FROM
  language AS lng,
  country AS ctry,
  region AS rgn,
  city AS cty,
  company AS, cmp,
  cmp_lng,
  ctry_lng,
  rgn_lng,
  cty_lng
WHERE lng.code = "en"
AND ctry_lng.lng_id = lng.id
AND ctry_lng.ctry_id = ctry.id
AND rgn.ctry_id = ctry.id
AND rgn_lng.rgn_id = rgn.id
AND rgn_lng.lng_id = lng.id
AND cty.rgn_id = rgn.id
AND cty_lng.cty_id = cty.id
AND cty_lng.lng_id = lng.id
AND cmp.cty_id = cty.id
AND cmp_lng.cmp_id = cmp.id
AND cmp_lng.lng_id = lng.id
ORDER BY cmp_lng.name ASC;

上面的查询是我要从PHP发送到MySQL 或者我应该创建一个视图、一个函数或一个存储过程,然后将查询从PHP发送到MySQL的名称。

还是谢谢!

该查询的性质似乎并不复杂。 存储过程和视图与优化此查询无关,您可以在此答案中阅读有关它们的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM