Używam SQLite w aplikacji na iOS i używam FMDB jako opakowania. To jest mój schemat bazy danych:Pobieranie złożonych danych przy użyciu FMDB
CREATE TABLE Offer (code TEXT PRIMARY KEY NOT NULL, name TEXT);
CREATE TABLE OffreMarket (codeOffer TEXT NOT NULL,
codeMarket TEXT NOT NULL,
FOREIGN KEY(codeOffer) REFERENCES Offer(code),
FOREIGN KEY(codeMarket) REFERENCES Market(code));
CREATE TABLE Market (code TEXT PRIMARY KEY NOT NULL, name TEXT);
mojego modelu obiektów:
@interface Offer : NSObject
@property (nonatomic,copy) NSString *code;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSArray *markets;
@end
@interface OffreMarket : NSObject
@property (nonatomic,copy) NSString *codeOffer;
@property (nonatomic,copy) NSString *codeMarket;
@end
@interface Market : NSObject
@property (nonatomic,copy) NSString *code;
@property (nonatomic,copy) NSString *name;
@end
Na przykład ja ściągam wszystkie oferty w bazie danych tak:
- (NSArray *)offers {
// Open database
NSMutableArray *offers = [NSMutableArray new];
FMResultSet *resultSet = [database executeQuery:@"SELECT * FROM Offer"];
while ([resultSet next]){
Offer *offer = [Offer new];
offer.code = [resultSet stringForKey:@"code"];
offer.name = [resultSet stringForKey:@"name"];
// Get the markets for each offer
FMResultSet *marketResultSet = [database executeQuery:@"SELECT * FROM OffreMarket WHERE codeOffer = ?",offer.code];
NSMutableArray *offers = [NSMutableArray new];
while ([marketResultSet next]) {
OffreMarket *offerMarket = [OffreMarket new];
....
[offers addObject:offerMarket];
}
market.offers = [offers copy];
}
return [offers copy]
}
to działa, ale to wymaga czasu, ponieważ korzystam z wielu zapytań SQL w celu pobrania wszystkich Ofert i odpowiednich Rynków.
Czy mogę uniknąć wielu żądań SQL
, aby pobrać wszystkie oferty z odpowiednimi rynkami? Dzięki za odpowiedzi
Dzięki za odpowiedź. Czy możesz podać przykład kodu, jak wykonać jedno zapytanie SQL, aby pobrać oferty i odpowiednie rynki dla każdej oferty? (Nie rozumiem, jak analizować ten sam obiekt, FMResultSet, aby mieć oferty i rynki – samir