0

私はこのスクリプトを持っています..最初にクエリ1を実行して配列に保存し、次にクエリ2を実行し、foreachを使用して、それらを組み合わせてURLのリストを作成します..しかし、これには時間がかかります..これを行う方法はありますか?共通の列がなくても、テーブルを組み合わせてmysql?

クエリ 1

 SELECT 
    c.id, 
    c.city_name,
    r.region_name,
    cr.country_name
    FROM city AS c, region AS r, country AS cr
    WHERE r.id = c.id_region 
         AND cr.id = c.id_country 
         AND cr.id IN 
           (SELECT id FROM country WHERE used = 1)

クエリ 2

  SELECT id, title FROM  param WHERE active = 1

ループ

  foreach ($arrayCity as $city) {
     foreach ($arrayParam  as $param ) {
        $paramTitle = str_replace(' ', '+', $param['title']);
        $url = 'http://url/city/'. $city['id'] .'/paramId/'. $param['id'] .'/'. 
                $paramTitle .'/'. $city['region_name'] .'/'. $city['city_name'];
            }
        }
4

3 に答える 3

1

条件付きで加入する必要はありません。そうしないことを a と呼びますCROSS JOINCROSSキーワードはオプションです。実際、,は同義語であるため、すでにこれを行っています。

FROM city AS c, region AS r, country AS cr, param
于 2013-09-30T18:18:47.193 に答える
0

どうですか

   Select 'http://url/city/' + c.id + '/paramId/' + p.id + '/' + 
           Replace(title, ' ', '+') + '/' + r.region_Name + '/' + c.city_Name
   From city c 
       Join region r On r.id = c.id_region 
       Join country n On n.id = c.id_country
       cross join param p
   Where n.Uused = 1
      And p.active = 1       
于 2013-09-30T18:27:53.313 に答える