У меня уже есть рабочее решение следующей проблемы, но я беспокоюсь, что это глупо или неэффективно.
Существует таблица Thing
со столбцами (id, attributes...)
, а также таблица ThingVersion
сстолбцы (id, thing_id, version_attributes...)
Проблема состоит в том, чтобы выбрать из Thing
, где существует ровно одна соответствующая строка ThingVersion
.
В настоящий момент у меня есть что-то вроде
SELECT Thing.id AS id, Foo.whatever
FROM Thing JOIN Foo ON Thing.id=Foo.thing_id
WHERE Thing.id IN (
SELECT thing_id FROM ThingVersion TV
WHERE 1 = (
SELECT COUNT(*)
FROM ThingVersion TV2
WHERE TV2.thing_id = TV.thing_id)
)
ORDER BY Foo.whatever
Кажется, это даетправильные результаты, и как решительный не гуру это кажется само собой разумеющимся, но - три выбирает?!?!- Я не могу помочь, но чувствую, что должен быть лучший путь.
Есть ли?