SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.07.2014 16:52:45

Denya-qt
Участник
Зарегистрирован: 04.06.2013
Сообщений: 15

Выборка из двух таблиц. Как подружить JOIN и MAX?

Здравствуйте.
Необходимо соотнести столбцы одной таблицы со столбцом в другой.

+---------+------+
| user_id | avto |
+---------+------+
|  1      | bmw  |
|  2      | audi |
|  3      | bmw  |
|  4      | mers |
+---------+------+

+----+------+
| id | tzone|
+----+------+
|  1 | +1   |
|  2 | +2   |
|  3 | +3   |
|  4 | +4   |
+----+------+

Результат выборки должен содержать три столбца user_id, avto и tzone, причем не должно быть повторений avto и, если в столбце avto есть одинаковые записи, то user_id нужен с максимальным значением.
Результат надо такой:

+---------+------+------+
| user_id | avto | tzone|
+---------+------+------+
|  2      | audi | +2   |
|  3      | bmw  | +3   |
|  4      | mers | +4   |
+---------+------+------+


Пытаюсь объединить:
SELECT max(user_id),avto,tzone FROM `table1` INNER JOIN `table2` ON user_id=id` GROUP BY avto
или
SELECT max(user_id),avto,tzone FROM `table1`,`table2` WHERE user_id=id GROUP BY avto - но получаю:

+---------+------+------+
| user_id | avto | tzone|
+---------+------+------+
|  2      | audi | +2   |
|  3      | bmw  | +1   |  <- ЗДЕСЬ ПРОБЛЕМА (надо +3, а взята строка с id=1)
|  4      | mers | +4   |
+---------+------+------+


Такое чувство, что сперва строки соотносятся, а потом отдельно совершается операция max(user_id).
Уже перекопал весь интернет, перепробовал кучу вариантов, но все не то.
Подскажите, пожалуйста, как реализовать мою задачу?
Спасибо.

Отредактированно Denya-qt (13.07.2014 16:55:09)

Неактивен

 

#2 13.07.2014 23:07:29

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выборка из двух таблиц. Как подружить JOIN и MAX?

Посмотрите статью о том как правильно выполнять группировку в MySQL


SELECT user_id, avto, tzone FROM
(SELECT max(user_id) user_id ,avto FROM `table1` GROUP BY avto) t1 INNER JOIN `table2` ON user_id=id`

Неактивен

 

#3 13.07.2014 23:13:56

Denya-qt
Участник
Зарегистрирован: 04.06.2013
Сообщений: 15

Re: Выборка из двух таблиц. Как подружить JOIN и MAX?

vasya, спасибо большое!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson