Это хороший кандидат на рекурсию! Нет необходимости добавлять категорию в UIView.
Использование (из вашего контроллера вида):
UIView *firstResponder = [self findFirstResponder:[self view]];
Код:
// This is a recursive function
- (UIView *)findFirstResponder:(UIView *)view {
if ([view isFirstResponder]) return view; // Base case
for (UIView *subView in [view subviews]) {
if ([self findFirstResponder:subView]) return subView; // Recursion
}
return nil;
}
Предполагая, что start_date и end_date для table1 должны находиться между start_date и end_date для table2, приведенный ниже запрос будет работать
SELECT t1.start1,
t1.end1
FROM (
SELECT p1.start_date AS start1,
p1.end_date AS end1,
p1.tool_type_id AS tool1,
p1.parent_id,
p1.mall_id AS mall1
FROM tbltools p1
JOIN app_fd_iads_reservation b1
ON p1.parent_id = b1.id
WHERE p1.parent_id = "id11") AS t1
LEFT JOIN
(
SELECT p11.start_date AS start2,
p11.end_date AS end2,
p11.tool_type_id AS tool2,
p11.parent_id ,
p11.mall_id AS mall2
FROM tbltools p11
JOIN tblbooking b11
ON p11.parent_id = b11.id
WHERE b1.status != 'Booked' && b1.status != 'Withdrawn' ) ) AS t2 ON (
AND
t1.tool1 = t2.tool2
AND
t1.mall1 =t1.mall2
)
WHERE t1.start1 BETWEEN t2.start2
AND
t2.end2
AND
t1.end1 BETWEEN t2.start2
AND
t2.end2