Моделирование ПОДКЛЮЧЕНИЯ ПРЕДШЕСТВУЮЩЕЙ из Oracle в SQL-СЕРВЕРЕ

Для отображения карты приведен пример кода.

Сначала импортируйте MKMapKit и инфраструктуру CoreLocation в ваш файл .h.

#import <MapKit/MapKit.h>
 #import <CoreLocation/CoreLocation.h>

Добавьте MKMapKit и CoreLocation Delegate в файл .h

@interface MapViewController : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate>


CGPoint gameMapCenter = CGPointMake([[UIScreen mainScreen] bounds].size.width / 2, [[UIScreen mainScreen] bounds].size.height / 2);
    gameMapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, 640, 620)];
    [gameMapView setCenter:gameMapCenter];
    [gameMapView setMapType:MKMapTypeStandard];
    [gameMapView setDelegate:self];
    [self.view addSubview:gameMapView];
    [gameMapView setShowsUserLocation:YES];

Используйте CLLocationManager для извлечения местоположения пользователя.

Объявить экземпляр CLLocationManager

CLLocationManager *locationManager;

В ViewDidLoad

locationManager = [[CLLocationManager alloc] init];

[locationManager setDelegate:self];

[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

[locationManager setDistanceFilter:kCLDistanceFilterNone];

[locationManger startUpdatingLocation];

startUpdatingLocation Реализация метода:

(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{
      //Your Stuff
}
42
задан Joel Coehoorn 6 June 2009 в 14:38
поделиться

2 ответа

Стандартным способом SQL для реализации рекурсивных запросов, реализованным, например, в IBM DB2 и SQL Server , является предложение WITH . См. в этой статье один пример преобразования CONNECT BY в WITH (технически рекурсивный CTE ) - пример предназначен для DB2, но я верю, что он будет работать и на SQL Server.

Редактировать: очевидно, исходному заявителю требуется конкретный пример, вот пример с сайта IBM, URL которого я уже дал. Дана таблица:

CREATE TABLE emp(empid  INTEGER NOT NULL PRIMARY KEY,
                 name   VARCHAR(10),
                 salary DECIMAL(9, 2),
                 mgrid  INTEGER);

где mgrid ссылается на empid менеджера сотрудника, задача состоит в том, чтобы получить имена всех, кто прямо или косвенно подчиняется Джоан . В Oracle это просто CONNECT :

SELECT name 
  FROM emp
  START WITH name = 'Joan'
  CONNECT BY PRIOR empid = mgrid

В SQL Server, IBM DB2 или PostgreSQL 8.4 (а также в стандарте SQL, чего это стоит ;-), вместо этого совершенно эквивалентное решение рекурсивный запрос (более сложный синтаксис, но на самом деле еще большая мощность и гибкость):

WITH n(empid, name) AS 
   (SELECT empid, name 
    FROM emp
    WHERE name = 'Joan'
        UNION ALL
    SELECT nplus1.empid, nplus1.name 
    FROM emp as nplus1, n
    WHERE n.empid = nplus1.mgrid)
SELECT name FROM n

Предложение Oracle START WITH становится первым вложенным SELECT , базовым случаем рекурсии , чтобы быть UNION с рекурсивной частью, которая является просто еще одним SELECT .

Особый вариант SQL Server WITH , конечно, задокументирован на MSDN , в котором также приведены рекомендации и ограничения по использованию этого ключевого слова, а также несколько примеров.

узнайте имена всех, кто подчиняется прямо или косвенно Джоан . В Oracle это просто CONNECT :

SELECT name 
  FROM emp
  START WITH name = 'Joan'
  CONNECT BY PRIOR empid = mgrid

В SQL Server, IBM DB2 или PostgreSQL 8.4 (а также в стандарте SQL, чего это стоит ;-), вместо этого совершенно эквивалентное решение рекурсивный запрос (более сложный синтаксис, но на самом деле еще большая мощность и гибкость):

WITH n(empid, name) AS 
   (SELECT empid, name 
    FROM emp
    WHERE name = 'Joan'
        UNION ALL
    SELECT nplus1.empid, nplus1.name 
    FROM emp as nplus1, n
    WHERE n.empid = nplus1.mgrid)
SELECT name FROM n

Предложение Oracle START WITH становится первым вложенным SELECT , базовым случаем рекурсии , чтобы быть UNION с рекурсивной частью, которая является просто еще одним SELECT .

Особый вариант SQL Server WITH , конечно, задокументирован на MSDN , в котором также приведены рекомендации и ограничения по использованию этого ключевого слова, а также несколько примеров.

узнайте имена всех, кто подчиняется прямо или косвенно Джоан . В Oracle это просто CONNECT :

SELECT name 
  FROM emp
  START WITH name = 'Joan'
  CONNECT BY PRIOR empid = mgrid

В SQL Server, IBM DB2 или PostgreSQL 8.4 (а также в стандарте SQL, чего это стоит ;-), вместо этого совершенно эквивалентное решение рекурсивный запрос (более сложный синтаксис, но на самом деле еще большая мощность и гибкость):

WITH n(empid, name) AS 
   (SELECT empid, name 
    FROM emp
    WHERE name = 'Joan'
        UNION ALL
    SELECT nplus1.empid, nplus1.name 
    FROM emp as nplus1, n
    WHERE n.empid = nplus1.mgrid)
SELECT name FROM n

Предложение Oracle START WITH становится первым вложенным SELECT , базовым случаем рекурсии , чтобы быть UNION с рекурсивной частью, которая является просто еще одним SELECT .

Особый вариант SQL Server WITH , конечно, задокументирован на MSDN , в котором также приведены рекомендации и ограничения по использованию этого ключевого слова, а также несколько примеров.

67
ответ дан 26 November 2019 в 23:43
поделиться

Ранее я не использовал соединение, но быстрый поиск показывает, что оно используется для древовидных структур. В SQL Server для получения аналогичных функций используются общие табличные выражения.

1
ответ дан 26 November 2019 в 23:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: