[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбрать MAX
maximyn
ТЕМА АКТУАЛЬНА - КТО СТАЛКИВАЛСЯ С ПОИСКОМ MAX-ой СТРОКИ ПОМОГИТЕ HELP HELP HELP HELP HELP HELP HELP HELP HELP
УЖЕ 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 написал(а):
Попробуй так:

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 Потому что у тебя MySQL. А я с Постгре предпочитаю общаться. Но идею, я думаю, ты понял. Названия колонок я взял условные 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 число у всех пользователей, а не у одного

Спустя 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


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

	$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

Большое тебе спасибо. Модераторы оцените это.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.