УЖЕ 2 НЕДЕЛИ БЬЮСЬ НЕ МОГУ НАЙТИ РЕШЕНИЕ
Помогите кто сталкивался.
У меня 3 таблицы
user, work, education
user
id | name | login
education
number | ... | login
work
number | ... | login
Я делаю запрос для объединения таблиц:
$result = mysql_query(
"SELECT * FROM resume
LEFT JOIN education ON resume.login = education.login
LEFT JOIN work ON resume.login=work.login
WHERE
ORDER BY `id` DESC LIMIT $start, $num");
Подскажите теперь как из выбрать мах значение number, где resume.login=work.login. Т.е. другими словами как выбрать последнее место работы или учебы у пользователя
Спустя 31 минута, 3 секунды (13.08.2010 - 10:22) sergeiss написал(а):
Я твой запрос на строки разбил, иначе вообще нифига нечитаемый он был! И после WHERE нифига нету - это как раз то место, про которое вопрос?
Спустя 1 час, 3 минуты, 20 секунд (13.08.2010 - 11:25) maximyn написал(а):
sergeiss Так точно, хотя я где то читал что нужно создавать временные таблицы??? А без них ни как через WHERE может как-нибудь
Спустя 1 час, 49 минут (13.08.2010 - 13:14) sergeiss написал(а):
Попробуй так:
"Временная таблица" - внутренняя часть вложенного запроса.
100% гарантии не дам, что работает
Потому что у тебя MySQL. А я с Постгре предпочитаю общаться. Но идею, я думаю, ты понял. Названия колонок я взял условные
, разберёшься.
Или - бОльшие спецы по MySQL подсобят.
SELECT distinct `job_column`, `id`, `job_date`
from
(SELECT * FROM resume
LEFT JOIN education ON resume.login = education.login
LEFT JOIN work ON resume.login=work.login
order by `id`, `work.job desc` ) as initial_selection
order by job_date desc
"Временная таблица" - внутренняя часть вложенного запроса.
100% гарантии не дам, что работает
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Или - бОльшие спецы по MySQL подсобят.
Спустя 1 день, 4 часа, 12 минут, 11 секунд (14.08.2010 - 17:27) _Dimarik__ написал(а):
SELECT MAX( login) FROM user; -вот тебе пример SQL-запроса для вывода максимального значения столбца login таблица user
Спустя 5 дней, 16 часов, 15 минут, 56 секунд (20.08.2010 - 09:43) maximyn написал(а):
_Dimarik__
Такой запрос не подходит т.к. он выберет max число у всех пользователей, а не у одного
Такой запрос не подходит т.к. он выберет max число у всех пользователей, а не у одного
Спустя 15 часов, 58 минут, 20 секунд (21.08.2010 - 01:41) dr_Lev написал(а):
может так ...
SELECT * FROM resume
LEFT JOIN (select max(number), login from education GROUP BY login) AS education ON resume.login = education.login
LEFT JOIN (select max(number), login from work GROUP BY login) AS work ON resume.login=work.login
Спустя 2 дня, 13 часов, 52 минуты, 38 секунд (23.08.2010 - 15:33) maximyn написал(а):
dr_Lev
Показывает только первое значение, т.е. как мне кажиться начинает искать max и на первом значение останавливается. Что не так понять не могу с виду все должно работать. Но почему то работает не так???? - этот код прислал dr_Lev.
SELECT * FROM resume
LEFT JOIN (SELECT MAX(number) AS max_number, number, education, university, speciality, faculty, yeared1, yeared2, mark
FROM education GROUP BY mark) AS education ON resume.mark = education.mark
LEFT JOIN (SELECT MAX(number), organization, office, yearwork1, yearwork2, function, expertise, mark
FROM work GROUP BY mark) AS work ON resume.mark = work.mark
ORDER BY `id` DESC LIMIT $start, $num");
Показывает только первое значение, т.е. как мне кажиться начинает искать max и на первом значение останавливается. Что не так понять не могу с виду все должно работать. Но почему то работает не так???? - этот код прислал dr_Lev.
Спустя 21 час, 52 минуты, 5 секунд (24.08.2010 - 13:26) maximyn написал(а):
Он ищет максимум, его находит но login берет первым, а не последним, а number - последнее
Спустя 20 часов, 18 минут, 58 секунд (25.08.2010 - 09:45) maximyn написал(а):
Почему код не работает. Должен выводить максимальную строку сгруппированную по mark
ТЕМА АКТУАЛЬНА - КТО СТАЛКИВАЛСЯ С ПОИСКОМ MAX-ой СТРОКИ ПОМОГИТЕ HELP HELP HELP HELP HELP HELP HELP HELP HELP
УЖЕ 2 НЕДЕЛИ БЬЮСЬ НЕ МОГУ НАЙТИ РЕШЕНИЕ
$result = mysql_query("SELECT * FROM education AS t1
(SELECT MAX(number) AS max_number, mark FROM education GROUP BY mark) AS t2
WHERE t1.number = t2.max_number");
while($row=mysql_fetch_array($result))// берем результаты из каждой строки
{ echo '<p> Запись id='.$row['number'].' Текст: '.$row['education'].'
'.$row['university,'].'
'.$row['speciality'].'
'.$row['yearwork2'].'
'.$row['faculty'].' </p>'; }
ТЕМА АКТУАЛЬНА - КТО СТАЛКИВАЛСЯ С ПОИСКОМ MAX-ой СТРОКИ ПОМОГИТЕ HELP HELP HELP HELP HELP HELP HELP HELP HELP
УЖЕ 2 НЕДЕЛИ БЬЮСЬ НЕ МОГУ НАЙТИ РЕШЕНИЕ
Спустя 2 часа, 48 минут, 40 секунд (25.08.2010 - 12:33) dr_Lev написал(а):
SELECT t1.* FROM education AS t1
INNER JOIN
(SELECT MAX(number) AS max_number, mark FROM education GROUP BY mark) AS t2 ON t1.number = t2.max_number
Спустя 7 часов, 1 минута, 38 секунд (25.08.2010 - 19:35) maximyn написал(а):
dr_Lev
Большое тебе спасибо. Модераторы оцените это.
Большое тебе спасибо. Модераторы оцените это.