2013-12-04 5 views
0

У меня есть 2 запроса: первый из них будет получать 5 пользователей с наибольшей задержкой, и я запускаю внутри цикла while второй запрос для извлечения имени пользователя и имени пользователя. Вот как это выглядит:Mysql joining 2 query's in one

select UserID, SUM(delay) as 'TOTdelay' FROM logboek WHERE date >= x AND date <= y GROUP BY UserID ORDER BY TOTdelay DESC LIMIT 5 
while ($stmt->fetch()) { 
    select Username, Name FROM users WHERE ID = $UserID LIMIT 1; 
    echo $Username.' on the x place with a total delay of '.$TOTdelay; 
} 

Как я могу объединить в этом 2-запросе к 1, поэтому я не должен выполнить запрос внутри мое время цикла?

Спасибо, что помогли мне!

+0

Вы можете сделать [SQLfiddle] (http://sqlfiddle.com)? – Raptor

ответ

1

Вы можете использовать INNER JOIN:

SELECT 
    Username, 
    Name, 
    SUM(delay) AS `TOTdelay` 
FROM 
    logboek 
INNER JOIN 
    users ON UserId = users.ID 
WHERE 
    date BETWEEN 20130101 AND CURDATE() 
GROUP BY 
    UserID 
ORDER BY 
    TOTdelay DESC 
LIMIT 5 
0

Попробуйте

select logboek.UserID, SUM(logboek.delay) as 'TOTdelay', users.Username, users.Name FROM logboek 
LEFT JOIN users on (users.id = logboek.UserID) 
WHERE logboek.date >= x AND logboek.date <= y GROUP BY logboek.UserID ORDER BY TOTdelay DESC LIMIT 5