Модераторы: skyboy, SamDark

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение одного поля привыборке из 2=х таблиц 
:(
    Опции темы
Aver78
Дата 4.9.2016, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



T1
         id 
         1
         2
T2
        id pt_id
        1      1
        2      1
        3      1   
        4      2 
        5      3
Select 
    t1.id, t2.id 
from 
  t1 
left join t2
  on t1.id=t2.pt_id

В результате  такого запроса будет таблица из 5 строк, 
        t1.id  t2.id
          1        1
          1        2 
          1        3
          2        4
          2        5
а нужно получить по 1 значению для каждого id из первой таблицы. Например по максимальному id второй.
то есть 
        t1.id  t2.id
          1        3
          2        5




Это сообщение отредактировал(а) Aver78 - 4.9.2016, 19:15
PM MAIL   Вверх
Akina
Дата 4.9.2016, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20356
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 104
Всего: 447



Цитата(Aver78 @  4.9.2016,  20:15 Найти цитируемый пост)
нужно получить по 1 значению для каждого id из первой таблицы

GROUP BY
Цитата(Aver78 @  4.9.2016,  20:15 Найти цитируемый пост)
максимальному id второй

MAX()


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aver78
Дата 4.9.2016, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



GROUP BY t2.id вообще ничего не даст, потому что они уникальны.
Наверное имелось в виду GROUP BY t1.id, но в этом случае при группировании возвращается строка с минимальным id. 
Если же поставить еще  ORDER BY t2.id DESC то t2.id  возвращается правильный но остальные данные(их, ясен пень, больше в таблице чем я указал для примера) опять же соответсвуют минимальному  t2.id.

PM MAIL   Вверх
Akina
Дата 4.9.2016, 23:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20356
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 104
Всего: 447



Цитата(Aver78 @  4.9.2016,  22:39 Найти цитируемый пост)
Наверное имелось в виду GROUP BY t1.id

Да.

Цитата(Aver78 @  4.9.2016,  22:39 Найти цитируемый пост)
в этом случае при группировании возвращается строка с минимальным id. 

Неспособность прочитать более половины ответа - это плохо...

Цитата(Aver78 @  4.9.2016,  22:39 Найти цитируемый пост)
Если же поставить еще  ORDER BY t2.id DESC

... как и способность прочитать в нём то, чего нет...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aver78
Дата 5.9.2016, 01:21 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Критика - это хорошо конечно, но куда следует привязать max() - из ответа непонятно.
PM MAIL   Вверх
igorold
Дата 5.9.2016, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



привяжи туда, где нужно максимальное значение, типа:
Код

Select t1.id, max(t2.id)....
 

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
igorold
Дата 5.9.2016, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



привяжи туда, где нужно максимальное значение, типа:
Код

Select t1.id, max(t2.id)....
 

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
igorold
Дата 5.9.2016, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



привяжи туда, где нужно максимальное значение, типа:
Код

Select t1.id, max(t2.id)....
 

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
igorold
Дата 5.9.2016, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



привяжи туда, где нужно максимальное значение, типа:
Код

Select t1.id, max(t2.id)....
 

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
igorold
Дата 5.9.2016, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



привяжи туда, где нужно максимальное значение, типа:
Код

Select t1.id, max(t2.id)....
 

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Aver78
Дата 5.9.2016, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Код

Select 
    t1.id, max(t2.id)
from 
  t1 
left join t2
  on t1.id=t2.pt_id
GROUP BY t1.id

 t2.id  возвращается правильный но остальные данные(их, ясен пень, больше в таблице чем я указал для примера) не соответсвуют  t2.id.


p.s. Нет, все неправильно возвращается, не туда посмотрел.

И, если я не ошибаюсь, вначале происходит группировка, а только потом из получившихся данных агрегирование в виде max. А там уже нечего к этому моменту агрегировать.

Это сообщение отредактировал(а) Aver78 - 5.9.2016, 10:49
PM MAIL   Вверх
igorold
Дата 5.9.2016, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



... про остальные поля речи не было, о чем спросили, то вам разжевали. Задавайте новый вопрос.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
igorold
Дата 5.9.2016, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



... про остальные поля речи не было, о чем спросили, то вам разжевали. Задавайте новый вопрос.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
igorold
Дата 5.9.2016, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



... про остальные поля речи не было, о чем спросили, то вам разжевали. Задавайте новый вопрос.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
igorold
Дата 5.9.2016, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



... про остальные поля речи не было, о чем спросили, то вам разжевали. Задавайте новый вопрос.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Google
  Дата 24.10.2018, 01:18 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0841 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.