Как вы решили проблему с LEFT JOIN
и нулевыми значениями в MySQL и Go?
Например, у меня есть две таблицы order
и order_item
.Все столбцы имеют атрибут not null
.Заказ может иметь 0 или более элементов order_items.Простой выбор, запрос левого соединения заказа без каких-либо элементов order_items завершается с ошибкой Row.Scan()
, поскольку столбцы order_item возвращаются как нулевые значения:
SELECT * FROM `order`
LEFT JOIN `order_item` USING (order_id)
WHERE `order`.order_id = '123'
Я вижу три решения, ни одно из которых, на мой взгляд, не является действительно хорошим:
- Использовать
COALESCE
/ IFNULL
=> Раздражает, потому что моя выбранная часть запроса генерируется автоматически. - Использовать нулевые значения из mysql go lib => Это будет означать, чтокаждое значение в моей структуре order_item будет иметь эти типы.
- Разделить запрос на 2 => Проблема, если мне нужен список из 50 заказов с order_items, это будет 51 запрос.
Есть ли у вас другие решения?