Ich verwende SQLite in einer iOS-Anwendung und ich verwende FMDB als Wrapper. Das ist meine Datenbankschema:Abrufen komplexer Daten mit 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);
Meine Modellobjekte:
@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
Zum Beispiel habe ich alle Angebote wie diese in der Datenbank bin holen:
- (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]
}
Dies funktioniert, aber es braucht Zeit, weil ich viele SQL-Anfragen verwende, um alle Angebote und die entsprechenden Märkte abzurufen.
Kann ich viele SQL
Anfragen vermeiden, alle Angebote mit den entsprechenden Märkten zu holen? Vielen Dank für Ihre Antworten
Danke für Ihre Antwort. Können Sie bitte ein Codebeispiel geben, wie Sie eine SQL-Anfrage ausführen, um die Angebote und die entsprechenden Märkte für jedes Angebot abzurufen? (Ich verstehe nicht, wie man das gleiche Objekt analysiert, um die Angebote und die Märkte zu haben. – samir