2016-01-06 3 views
0

Скажем, у меня есть 2 таблицы:Должен ли я использовать таблицу соединений? [MYSQL]

Participants (id, name, email, phone, registration_date) 
Activities (id, coach_id, player_id, total_time, date) 

Я хочу найти все имена игроков и их электронные письма которых общее время всегда более 60. ли я использовать «присоединиться» для этого случая? Я не могу решить эту проблему и застрял со следующим кодом

SELECT name, phone 
FROM Participants, Activities 
WHERE total_time > 60 

ответ

1

Я думаю, что это должно получить, что вы хотите (предполагая, что 2 таблицы связаны на основе Participants.id = Activities.player_id отношения)

SELECT Participants.name 
    , Participants.phone 
    FROM Participants 
INNER 
    JOIN Activities 
    ON Participants.id = Activities.player_id 
WHERE Activities.total_time > 60 
+0

Это замечательно! Спасибо :) – Dale12

0

Вы должны используйте соединение.

Как еще MySql узнает, какая запись в таблице Activities соответствует какой записи в Участники?

Джойн часть определяет, что:

SELECT Participants.* 
FROM Participants 
INNER JOIN Activities ON Activities.player_id = Participants.id 
WHERE Activities.total_time > 60 

Только ради этого, она разрешима без объединения:

/* BAD CODE, DON'T USE */ 
SELECT * 
FROM Participants 
WHERE (SELECT Max(total_time) FROM Activities where player_id = Participants.Id) > 60 

Но это неэффективно и с помощью соединения является правильный путь сделать это.

Смежные вопросы