2015-05-08 1 views
0
  1. Поиск goals для строк, где идентификатор = 1.
  2. Использование возвращаемых строк поиска матч checkin где biometricid «s, наряду с userid и фильтром которые старше даты цели.

Примечание: Имид с идентификатором пользователя и biometricid являются чужими таблицами.SQL: Поиск X таблицы и возврата строки из Y на основе данных X

Как я могу сделать это с помощью одного запроса?

checkin 
id | userid | date     | biometricid | value 
1 | 1   | 2015-01-10 00:00:00 | 1    | 9 
2 | 1   | 2000-05-11 00:00:00 | 1    | 7 
3 | 2   | 2015-01-10 00:00:00 | 1    | 9 
4 | 1   | 2015-01-10 00:00:00 | 2    | 1 
5 | 1   | 2017-01-11 00:00:00 | 1    | 4 

goals 
id | userid | date     | biometricid | value 
1 | 1  | 2000-01-05 00:00:00 | 1    | 3 
2 | 1  | 2015-01-01 00:00:00 | 2    | 2 
3 | 2  | 2015-01-01 00:00:00 | 1    | 2 

desired result 
id | date     | biometricid | value 
1 | 2015-01-10 00:00:00 | 1    | 9 
2 | 2017-01-11 00:00:00 | 1    | 4 

ответ

0

Благодаря тому, как вы сформулировали вопрос, и тот факт, что кажется, многие другие вопросы я ответа в последнее время использовали их, я был соблазн показать подвыбор в WHERE; но я понимаю, что на ваш вопрос можно ответить гораздо проще:

SELECT c.* 
FROM goals AS g 
    INNER JOIN checkin AS c ON g.userid = c.userid 
     AND g.biometricid = c.biometricid 
     AND c.`date` >= g.`date` 
WHERE g.user_id = 1 
; 
Смежные вопросы