Intereting Posts

MySQL> суммируется в один запрос (включая карты Google)

Этот Q размещен в качестве комментария к одному из моих вопросов от @Vincent Savard.

В настоящее время я пытаюсь (с некоторым успехом – использовать тайм-аут через 60 секунд для XML-запросов Google Maps) для разделения данных из (красивой) большой таблицы на множество небольших таблиц – плюс преобразование / изменение / и т. Д. На лету. Для этой задачи я использую php ближе к следующему примеру:

// The following happens inside some functions. // The main table has some "groups" of content. // fn_a creates the new small tables " CREATE TABLE {$small_table_a} col_group_a_id int UNSIGNED NOT NULL AUTO_INCREMENT, col_group_a_fname tinytext, col_group_a_lname tinytext, col_group_a_valA tinytext, col_group_a_valB tinytext, col_group_a_address tinytext, col_group_a_lat decimal(9,3), col_group_a_lng decimal(9,3), PRIMARY KEY (id) " " CREATE TABLE {$small_table_b} col_group_b_id int UNSIGNED NOT NULL AUTO_INCREMENT, col_group_b_fname tinytext, col_group_b_lname tinytext, col_group_b_valA tinytext, col_group_b_valB tinytext, col_group_b_address tinytext, col_group_b_lat decimal(9,3), col_group_b_lng decimal(9,3), PRIMARY KEY (id) " // fn_b loads the content from the big table, modifies it and saves it row per row into the small tables $sql = " SELECT * FROM {$big_table} " foreach ( $sql as $data ) { $id = $data->id; $group_a_fname = $data->group_a_fname; $group_a_lname = $data->group_a_lname; $group_a_lname = "{$group_a_fname}, {$group_a_lname}"; $group_a_valA = $data->group_a_valA ? $data->group_a_valA : '-'; $group_a_valA = $data->group_a_valB ? $data->group_a_valB : 'none'; $group_a_valA = $data->group_a_address; $group_b_fname = $data->group_b_fname; $group_b_lname = $data->group_b_lname; $group_b_name = "{$group_b_fname}, {$group_b_lname}"; $group_b_valA = $data->group_b_valA ? $data->group_b_valA : '/'; $group_b_valA = $data->group_b_valB ? "€ {$data->group_b_valB}" : null; " INSERT INTO {$small_table_a} ... VALUES ... " } // fn_c pulls in data from the small tables, asks the google map API for lat & lng and _should_ update the small table $sql = " SELECT * FROM {$small_table_a} " foreach ( $sql as $data ) { $output['id'] = $data->id; $address = urlencode( $data->address ); $url = "http://maps.google.com/maps/api/geocode/xml?address={$address}&sensor=false"; $content = file_get_contents( $url ); $file_data = new SimpleXMLElement( $content ); $file_data = $file_data->result ? $file_data->result : null; if ( ! $file_data ) continue; $location = $file_data->geometry->location; $output['lat'] = (string) $location->lat; $output['lng'] = (string) $location->lng; } foreach ( $output as $data ) { " UPDATE {$table} SET lat=SET lat={$data['lat']}, lng={$data['lng']} WHERE id=$data['id'] } 

Вопрос: Как я могу сделать это в одном запросе? Или как я могу уменьшить DB-запросы? И как бы добавить lat / lng в таблицы, не прерывая построение запроса, когда мой предел геокодирования был превышен на сегодняшний день – я не хочу бросать все только потому, что перешел мой лимит.

Благодаря!

Примечание. Пример был написан вручную прямо из моего сознания. Могут быть неисправности.