|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Прошу помочь с решением данного вопроса. Есть две таблицы и данные для них Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: plaintext
Код: plaintext
Как с помощью одного запроса на выходе получить: name_id name distance 1 name1 100 4 name3 200 5 name2 500 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 18:20 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 19:24 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Akina, Спасибо за фидл) Логика следующая, в таблице main_table около 10 строк, в add_table тысячи, надо выбрать строки с минимальным distance из add_table чтобы main_table.name не повторялся, а add_table.id нужен для дальнейшей работы. Сгруппировать их только по add_table.name_id не получится, так как main_table.name может повторяться, но при этом main_table.sometext будет разным. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 19:54 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Бред какой-то... artyman Логика следующая, в таблице main_table около 10 строк, в add_table тысячи Смотрим на FK. Строим соотв. запрос: Код: sql 1. 2. 3.
соответственно получаем idnamesometextidname_iddistance1name1text1111002name2text2525003name3text3434004name3text4242005name3text535300 Что дальше? Какова логика получения из этих данных показанного выше результата? Особенно - согласно какой логике сформирована третья строка результата? подробненько... а заодно - сразу объясняя, почему соответствующая логика не отражена с в структуре хранения. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 21:16 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
artyman, CONCAT(name, cometext) при группировке. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 21:19 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Akina соответственно получаем idnamesometextidname_iddistance1name1text1111002name2text2525003name3text3434004name3text4242005name3text535300 В вашем результате name3 повторяется три раза, а надо чтобы была строка только с минимальным значением distance, то есть строка 4, значение 200. Но в тоже самое время мне необходимо знать, что это значению 200 соответсвует name_id = 4 Если подскажите как поправить структуру хранения, для получения нужного результата, указанного в первом посте - будет замечательно. Появилась проблема - ищу помощи с вариантом решения, был бы профессионал, вряд ли бы спрашивал. Если отправить такой запрос, то результат нужный, но как к нему добавить еще add_table.name_id или main_table.id я не знаю. Код: sql 1. 2. 3.
nname MIN(distance)name1 100name3 200name2 500 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 23:34 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
artyman В вашем результате name3 повторяется три раза Ясен пень, я всего лишь связал таблицы, ориентируясь на внешний ключ, без дальнейшей обработки. artyman надо чтобы была строка только с минимальным значением distance FAQ: Выборка первой/последней записи в группах ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2020, 23:39 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Akina, Спасибо, работает! Буду выбирать более быстрый метод ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 00:03 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Akina, Всё таки поторопился, опять же в моей задаче не получается так как хотелось бы, потому что значение main_table.name не уникально. И например такой запрос, выдает опять же не тот результат. Код: sql 1. 2. 3. 4. 5. 6. 7.
id name distance1name11002name25003name34004name32005name3300 Не должно быть строк 3, 4 и 5, а только одна 4,name3,200 - потому что 200 это минимальное значение в этих трех строках. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 00:44 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
artyman, Чтобы оно стало уникальным, к нему надо добавить то поле, которое делает его уникальным, написал же CONCAT() должен помочь. Ну или делать группировку по паре полей, но тогда и дробление групп будет более мелким. Как вариант, получив id минимальной записи можно обернув снаружи запрос получить по нему нужной name. Смотря что надо. Не очень понял задачу.. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 09:02 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
artyman , у Вас, блин, группа - это что? это одинаковые `name` . А ни фига не `name_id` . ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 09:57 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Arhat109, Задача выбрать уникальное name, минимальное значение distance для него, а id этого name. Не получилось с помощью CONCAT сделать так. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 11:30 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Akina, но как объединить по name, если одинаковые только name_id? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 11:39 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
artyman Задача выбрать уникальное name, минимальное значение distance для него artyman а id этого name. Если имеется в виду name_id из таблицы add_table, то она соответствует выбранному distance. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 13:09 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
artyman, если ещё не решилось, то как-то так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но, кмк, это можно упростить. За упрощением уже к Akina, сейчас не так часто Мускуль в работе.. Суть запроса: Внутренним подселектом выбираем минимальное distance для имени. Затем джойним снова на таблицу расстояний и получаем те записи, где расстояния минимальны. По внешнему ключу джойним основную табличку, получая тест имени и идент записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 21:50 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
ну или как то так Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:52 |
|
Выборка минимальных значений из одной таблицы с группировкой по имени из другой
|
|||
---|---|---|---|
#18+
Dino_zavr ну или как то так Код: plsql 1. 2. 3. 4.
А вот это реально сработало как надо, потому что еще отсекло строки с одинаковыми distance и name. Всем огромное спасибо, а самому еще учиться и учиться) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 22:49 |
|
|
start [/forum/topic.php?fid=47&msg=40018553&tid=1828300]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 389ms |
0 / 0 |