Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > MySQL > Два left join плюс group by |
Автор: rcdimon 9.3.2014, 10:37 | ||||||||||||
Есть таблица, которая хранит предметы tmc, есть вторая таблица, которая хранит акты действий над предметами. И есть третья таблица, в которой хранится связь предметов и актов дейстивй над ними. Акты могут быть нескольких типов. Например выдача предмета, приемка предмета, списание и т.д. Акт делается над несколькими предметами одновременно. Например сотруднику выдается 10 предметов. А в третьй таблице уже описываются какие именно предметы выдаются или принимаются по этому акту. Хочу вывести список всех предметов с указанием последнего акта и типа акта над ними. Чтобы узнать, что предмет 1 находится на складе, предмет два был выдан сотруднику и сейчас у него и т.д. Чтобы узнать что сейчас творится с предметом нужно получить последний акт, связанный с ним и посмотреть на его тип. Выдача сотруднику этот или возврат на склад, например. Делаю простой запрос, который выведет последние акты по всем предметам в базе
Запрос выдает верный результат
По третьему предмету не было актов. По первому последний акт номер 11, по второму - 9 Теперь хочу добавить в вывод данные о типе акта. Для этого подключаю третью таблицу с актами
Для начала убрал условие вывода именно последнего акта и сделал вывод всех Поэтому получит такой ответ
Смотрим что по предмету 1 посдений акт 11 и тип у него 2 По предмету 2 последний акт номер 9 и тип у него 1 Добавляем MAX и GROUP BY
Получаем неверный результат
Получается, что в третьем столце не те данные, которые я хочу, а первые встретившиеся в базе. Подскажите, пожалуйста, что я делаю не так... И как все-таки получить данные по всем предметам, номерам последних актов над ними и их типы.... |
Автор: Akina 9.3.2014, 17:04 |
Доки читать надо. Всё происходит в точности как там описано. Что делать? получать идентифицирующие сведения в подзапросе, и полные во внешнем запросе. |