У меня сегодня день Идиота. Я уверен, что это относительно просто, но мой мозг просто не дает мне ответа.Возврат строки в том и только в том случае, если строка родства не существует
У меня есть таблица, строки которой являются типами объектов. Выглядит примерно так:
id name foo bar house_id
1 Cat 12 4 1
2 Cat 9 4 2
3 Dog 8 23 1
4 Bird 9 54 1
5 Bird 78 2 2
6 Bird 29 32 3
Это не так, как я выбрал бы его реализовать, но это то, что я работаю с. Объекты (кошки, собаки и птицы, в реальной жизни они являются реальными делами) были добавлены в таблицу на разовой основе. Когда house_id 1 нуждается в котах, записывается запись для кошек. Когда house_id 3 получает собак, запись вводится собакам.
Теперь мне нужно обновить эту таблицу, так что каждый Тип объекта (Cat, Dog, Bird) имеет запись для данного house_id. Я хочу сделать это, вставив результат из запроса select, который возвращает одну запись для каждого типа, с самыми ранними значениями для «foo» и «bar» из строки этого типа, если и только если нет существующей записи для этого типа с данным house_id.
Таким образом, для приведенного выше примера данных, где данная house_id = 3, то запрос на выборку будет возвращать следующее:
name foo bar house_id
Cat 12 4 3
Dog 8 23 3
, который можно затем вставить прямо в таблице.
В принципе, верните первую строку каждого отдельного имени, если нет строк этого имени с заданным house_id.
Предложения приветствуются. Двигатель БД - postgres, если это помогает.
Каково ваше определение «самых ранних» vañues для «foo» и «bar»? – Sebas
Значения из строки этого типа с наименьшим идентификатором. –
Этот тип дома или этого вида животных? – wildplasser