У меня есть эти 3 таблицы
кандидаты
cdid cdname 1 мусса 2 Мустафа 3 Хайтам
позиции
Posid Posname 1 поз1 2 поз2 3 поз3
Предложения о работе
зарплата 1 1 600 1 2 800 1 3 700 2 1 500 2 2 700 2 3 900 3 2 1000 3 3 500
Мне нужно сделать запрос, который получит cdname
с максимальной зарплатой за каждую должность
таблица должна быть такой
cdname posname зарплата Мусса пос1 600 haitham pos2 1000 Мустафа пос3 900
Я использую этот запрос, но он не получает правильный cdid
$sql="select joboffers.cdid,joboffers.posid,Max(joboffers.salary),candidates.cdname
FROM joboffers,candidates
Where joboffers.cdid=candidates.cdid
Group by joboffers.posid";
Попробуй это 🙂
SELECT sub.cdname, sub.posname, sub.salary
FROM (
SELECT * FROM joboffers jo
INNER JOIN positions ps USING (posid)
INNER JOIN candidates cd USING (cdid)
ORDER BY posid, salary DESC
) sub
GROUP BY sub.posid
Я думаю, что вам нужно сгруппировать по всем неагрегированным столбцам, например так:
SELECT j.cdid, c.cdname, j.posid, MAX(j.salary)
FROM joboffers j
JOIN candidates c ON j.cdid = c.cdid
GROUP BY j.cdid, c.cdname, j.posid
SELECT c.cdname, p.posname, MAX(j.salary)
FROM joboffers j
INNER JOIN candidates c ON j.cdid = c.cdid
INNER JOIN positions p ON j.posid = p.posid
GROUP BY c.cdname, p.posname
enter code here
ВЫБЕРИТЕ customerNumber, MAX (количество)
ОТ платежей
GROUP BY customerNumber
ЗАКАЗАТЬ ПО МАКСУ (сумма);