Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос (JOIN, MAX и Groupe By) / 9 сообщений из 9, страница 1 из 1
13.11.2015, 16:10:02
    #39103075
plosion87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
Добрый день.
Помогите, пожалуйста, составить запрос для MySQL.
Есть 2 таблицы: mat и mat_documents

Нужно отобразить максимальный номер документа ( с данными всей строки ) в разрезе групп материалов (mat.groupe).
Более понятно я максимально набросал в примере в приложении к сообщению.

Практически удалось сформировать запрос:

SELECT max(b.docnu), a.title, a.groupe,b.amount FROM mat_documents a
RIGHT JOIN mat d ON a.id_mat=b.id_mat
GROUP BY a.groupe

Проблема у меня осталась в том, что в моём запросе выбирается только максимальный номер документа, а для остальных данных строки нельзя применить max (например, title). Моя задача должна решаться как-то изящнее, но никак не получается... помогите :)

Заранее спасибо!

P.S. Все подробности в файле.
...
Рейтинг: 0 / 0
13.11.2015, 17:31:47
    #39103152
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
Шаблон:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT t1.*
FROM table AS t1
JOIN (
       SELECT t2.field1, MAX(t2.field2) AS field2
       FROM table AS t2
       GROUP BY field1
     ) AS t3
ON t1.field1 = t3.field1
...
Рейтинг: 0 / 0
13.11.2015, 17:33:05
    #39103155
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
Пардон, строка улетела...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT t1.*
FROM table AS t1
JOIN (
       SELECT t2.field1, MAX(t2.field2) AS field2
       FROM table AS t2
       GROUP BY field1
     ) AS t3
ON  t1.field1 = t3.field1
AND t1.field2 = t3.field2
...
Рейтинг: 0 / 0
13.11.2015, 18:45:01
    #39103199
plosion87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
AkinaПардон, строка улетела...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT t1.*
FROM table AS t1
JOIN (
       SELECT t2.field1, MAX(t2.field2) AS field2
       FROM table AS t2
       GROUP BY field1
     ) AS t3
ON  t1.field1 = t3.field1
AND t1.field2 = t3.field2



Не получается что-то... Поля "t1.field2 = t3.field2" - field2 нет в таблице t1.
SELECT t1.* - Помимо t1 нужно вывести данные ещё из таблицы t2.

Уделите pls ещё минутку своего внимания моей проблеме, что-то запутался совсем.

P.S.
Немного напутал в своём файле с SQL-запросом моим, скорректировал во вложении.
SELECT max(a.docnu), b.title, b.groupe,a.amount FROM mat_documents a
RIGHT JOIN mat b ON a.id_mat=b.id_mat
GROUP BY b.groupe
...
Рейтинг: 0 / 0
13.11.2015, 19:59:34
    #39103239
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
plosion87 field2 нет в таблице t1Это, блин, ШАБЛОН!
...
Рейтинг: 0 / 0
14.11.2015, 16:11:22
    #39103504
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
plosion87Добрый день.
Помогите, пожалуйста, составить запрос для MySQL.
Есть 2 таблицы: mat и mat_documents

Нужно отобразить максимальный номер документа ( с данными всей строки ) в разрезе групп материалов (mat.groupe).
Более понятно я максимально набросал в примере в приложении к сообщению.

Практически удалось сформировать запрос:

SELECT max(b.docnu), a.title, a.groupe,b.amount FROM mat_documents a
RIGHT JOIN mat d ON a.id_mat=b.id_mat
GROUP BY a.groupe

Проблема у меня осталась в том, что в моём запросе выбирается только максимальный номер документа, а для остальных данных строки нельзя применить max (например, title). Моя задача должна решаться как-то изящнее, но никак не получается... помогите :)

Заранее спасибо!

P.S. Все подробности в файле.

7543220
...
Рейтинг: 0 / 0
16.11.2015, 12:07:23
    #39104289
plosion87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
Akinaplosion87 field2 нет в таблице t1Это, блин, ШАБЛОН!

Ребят, составил запрос по предложенному шаблону, результат тот же, что и был первоначально в моём запросе. Выводится только максимальный номер, а мне нужна вся выборка по максимальному номеру. Я не очень спец в SQL, может укажете на ошибку, где допущена.

SELECT b . * , field3
FROM mat AS b
JOIN (
SELECT t2.id_mat, MAX( t2.docnu ) AS field2, t2.amount AS field3
FROM mat_documents AS t2
GROUP BY id_mat
) AS t3 ON b.id_mat = t3.id_mat
GROUP BY b.groupe
ORDER BY `b`.`id_mat` ASC
...
Рейтинг: 0 / 0
16.11.2015, 13:21:40
    #39104396
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
plosion87Ребят, составил запрос по предложенному шаблонугде в шаблоне внешний групбай? где у вас условие связи по двум полям?
...
Рейтинг: 0 / 0
16.11.2015, 14:59:02
    #39104557
plosion87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос (JOIN, MAX и Groupe By)
tanglirplosion87Ребят, составил запрос по предложенному шаблонугде в шаблоне внешний групбай? где у вас условие связи по двум полям?

Я же приложил пример, в моей задаче исходные данные такие, что шаблонный пример пришлось модифицировать, поэтому отвечая на Ваши вопросы:
1)Нужна группировка по полю группы материалов, которая есть только в таблице mat, поэтому пришлось использовать помимо внутренней, ещё и внешнюю группировку.
2)По поводу условия связи его тоже нету, т.к. поле MAX(t2.field2) AS field2 - есть только в одной таблице mat_documents, поэтому с чем его связывать не очень понятно.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос (JOIN, MAX и Groupe By) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]