У меня есть 3 таблицыSQL: Получить последние записи из истории таблицы
person (id, name)
area (id, number)
history (id, person_id, area_id, type, datetime)
В этом таблицах я хранить информацию, какое лицо было в каком районе в определенное время. Это похоже на то, что продавец некоторое время путешествует по области, а затем получает другую область. Он также может иметь несколько областей одновременно.
тип истории = 'I' для CheckIn или 'O' для оформления заказа. Пример:
id person_id area_id type datetime
1 2 5 'O' '2011-12-01'
2 2 5 'I' '2011-12-31'
A person started traveling in area 5 at 2011-12-01 and gave it back on 2011-12-31.
Теперь я хочу, чтобы получить список всех областей все люди имеют прямо сейчас.
person1.name, area1.number, area2.number, area6.name
person2.name, area5.number, area9.number
....
Выход может быть, как это тоже (это не имеет значения):
person1.name, area1.number
person1.name, area2.number
person1.name, area6.number
person2.name, area5.number
....
Как я могу это сделать?
Итак, вы ищете список людей, которые в настоящее время имеют выданную область и еще не проверили ее? – ean5533
Я собираюсь лично рекомендовать против хранения 'type' в качестве значения' char' (или, по крайней мере, на его одиночестве) - сохранить его как ссылку fk на таблицу с подробным описанием того, что это значение _means_ (например, ваш 'person' и таблицы 'area'). Это ограничивает записи действительными значениями, которые могут (легко) быть обновлены в любое время, без необходимости в заявлениях 'alter' ... между прочим. –
Предположительно, id = 1 во второй строке данных примера истории является опечаткой, и это должно быть 2 или какое-то другое число? –