我有一个带有功能的web api:
function fodboldStream() {
//$timezone = date_default_timezone_get('Europe/Copenhagen');
//$date = date('Y-m-d');
$result = query("SELECT kampe2.dato,kampe2.id,kampe2.sqltime, kampe2.tidspunkt,kampe2.hiddenmatch, turneringer.turnering, turneringer.image, holdH.hold AS hjemmehold, holdU.hold AS udehold, holdH.imagebig AS hjemmeimage, holdU.imagebig AS udeimage, tvkanal.kanal,tvkanal.imageny, kampe2.optakt, kampe2.info, kampe2.type
FROM kampe2
INNER JOIN turneringer ON kampe2.turnering=turneringer.id
INNER JOIN tvkanal ON kampe2.kanal1=tvkanal.id
LEFT OUTER JOIN hold holdH ON holdH.id = kampe2.hjemmehold
LEFT OUTER JOIN hold holdU ON holdU.id = kampe2.udehold
WHERE kampe2.hiddenmatch=0 AND kampe2.dato >= cast((now()) as date) ORDER BY kampe2.tidspunkt ");
if (!$result['error']) {
print json_encode ($result);
} else {
errorJson('fodbold stream is broken');
}
}
这给了我一个这样的数组:
result = (
{
dato = "2015-03-01";
hiddenmatch = 0;
hjemmehold = "Val\U00e8ncia CF";
hjemmeimage = "1775.png";
id = 7571;
image = "5_ll.png";
imageny = "Canal9.png";
info = "";
kanal = "Canal 9";
optakt = "11:55";
sqltime = 1425207600;
tidspunkt = "12:00";
turnering = "Liga BBVA";
type = "";
udehold = "Real Sociedad";
udeimage = "1742.png";
}
我的问题是tvkanal.kanal
只给了我1
,表格中的行是11
,61
,45
。
如何在这1个查询中将tvkanal1 = x tvkanal2 = x
和tvkanal3
作为1 to 3 "tvkanal"
来获取?
如果我在集合中使用find:
$result = query("SELECT kampe2.dato,kampe2.id,kampe2.sqltime, kampe2.tidspunkt,kampe2.hiddenmatch, turneringer.turnering, turneringer.image, holdH.hold AS hjemmehold, holdU.hold AS udehold, holdH.imagebig AS hjemmeimage, holdU.imagebig AS udeimage, kampe2.optakt, kampe2.info,GROUP_CONCAT(tvkanal.image) as TVimg, kampe2.type
FROM kampe2
INNER JOIN turneringer ON kampe2.turnering=turneringer.id
INNER JOIN tvkanal ON FIND_IN_SET(tvkanal.id, kampe2.kanal1)>0
LEFT OUTER JOIN hold holdH ON holdH.id = kampe2.hjemmehold
LEFT OUTER JOIN hold holdU ON holdU.id = kampe2.udehold
WHERE kampe2.hiddenmatch=0 AND kampe2.dato >= cast((now()) as date) ORDER BY kampe2.tidspunkt ");
我明白了:
result = (
{
TVimg = "ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,TV3-Sport-1-v2.png,TV3-Sport-1-v2.png,3Plus-Logo-v2.png,canal9-v3.png,TV3-Sport-1-v2.png,canal8-v3.png,TV3-Sport-1-v2.png,3Plus-Logo-v2.png,TV3-Sport-1-v2.png,TV3-Sport-1-v2.png,TV3-Sport-1-v2.png,canal9-v3.png,canal8-v3.png,canal9-v3.png,TV3-Sport-1-v2.png,3Plus-Logo-v2.png,TV3-Sport-1-v2.png,canal8-v3.png,TV3-Sport-1-v2.png,TV3-Sport-1-v2.png,3Plus-Logo-v2.png,canal9-v3.png,TV3-Sport-1-v2.png,canal8-v3.png,TV3-Sport-1-v2.png,TV3-Sport-1-v2.png,TV3-Sport-1-v2.png,3Plus-Logo-v2.png,canal8-v3.png,TV3-Sport-1-v2.png,canal9-v3.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke-fastlagt.png,ikke";
dato = "2015-06-07";
hiddenmatch = 0;
hjemmehold = "FC Vestsj\U00e6lland";
hjemmeimage = "555.png";
id = 6180;
image = "Alka-superliga2.png";
info = "";
optakt = "";
sqltime = 1433685600;
tidspunkt = "16:00";
turnering = "Alka Superligaen";
type = "";
udehold = "Silkeborg IF";
udeimage = "551.png";
}
);
}
我正在做一些工作。
答案 0 :(得分:0)
一种方法是使用多个INNER JOINS:
INNER JOIN tvkanal AS tvkanal1 ON kampe2.kanal1=tvkanal.id
INNER JOIN tvkanal AS tvkanal2 ON kampe2.kanal2=tvkanal.id
INNER JOIN tvkanal AS tvkanal3 ON kampe2.kanal3=tvkanal.id
然后在SELECT字段中:
tvkanal1.kanal,tvkanal1.imageny,tvkanal2.kanal,tvkanal2.imageny,tvkanal3.kanal,tvkanal3.imageny
答案 1 :(得分:0)
我做了一个新功能:
function fodboldTVKanalerStream($kampId) {
$result = query("SELECT kampe2.dato, GROUP_CONCAT(tvkanal.imageny) as TVimg
FROM kampe2
INNER JOIN tvkanal ON FIND_IN_SET(tvkanal.id, kampe2.kanal1)>0
WHERE kampe2.hiddenmatch=0 AND kampe2.id='%d' AND kampe2.dato >= cast((now()) as date) ORDER BY kampe2.tidspunkt",$kampId);
if (!$result['error']) {
print json_encode($result);
} else {
errorJson('TvImage stream is broken');
}
}
并且我在对象c中执行这样的拆分:
NSString *thisGameId = [game objectForKey:@"id"];
//...........tv image handling ...............................
[API sharedInstance].imagePath = [NSString stringWithFormat:@"images/TVkanaler/new/"];
[[API sharedInstance] commandWithParams:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"fodboldTVKanalerStream", @"command",thisGameId,@"kampId", nil] onCompletion:^(NSDictionary *json) {
NSArray *daTa = [json objectForKey:@"result"];
NSArray *tvimages = [daTa mutableArrayValueForKey:@"TVimg"];
NSString *joinedComponents = [tvimages componentsJoinedByString:@","];
NSArray* myArray = [joinedComponents componentsSeparatedByString:@","];
if (myArray.count <2) {
NSString* firstString = [myArray objectAtIndex:0];
// .......... making the sever call .........................
API* api = [API sharedInstance];
NSURL* imageURL = [api urlForImageWithId:firstString isThumb:NO];
AFImageRequestOperation* imageOperation = [AFImageRequestOperation imageRequestOperationWithRequest: [NSURLRequest requestWithURL:imageURL] success:^(UIImage *image) {
//create an image view, add it to the view
cell.chanelImageView.image = image;
cell.chanel2ImageView.image = Nil;
cell.paddingImageView2.hidden = YES;
}];
NSOperationQueue* queue = [[NSOperationQueue alloc] init];
[queue addOperation:imageOperation];
//NSLog(@"1 billede %@",firstString);
}