Существует ли инструмент, который говорит вам (или дает подсказку), почему конкретный оператор выбора не возвращает никаких строк, учитывая текущие данные в вашей базе данных.
например, если у вас было 4 следующих соединения таблицы
select *
from a, b, c, d
where a.b_id = b.id
and b.c_id = c.id
and c.d_id = d.id
Если бы были строки, удовлетворяющие условию a.b_id = b.id, а также строки, удовлетворяющие условию b.c_id = c.id, но не было строк, удовлетворяющих условию c.d_id = d.id, это выделило бы c.d_id = d.id как проблема.
Т.е. Это может привести к нарушению предложения where и выяснить, какое из подусловий вернуло true, и выделить те, которые не вернули true.
Это не будет хорошо работать для сложных запросов, но многие операторы select являются простыми объединениями множества таблиц.
Это может быть полезно при создании тестовых данных для проверки кода приложения или отладки проблемы с работающей системой.
Графические инструменты объяснения (которые показывают план фактического пути выхода) приближаются, но они показывают слишком много информации и не выделяют отсутствующую ссылку в выбранной сцене.
Я использую postgres, sqllight и mysql, но мне было бы интересно узнать, как работают инструменты для других баз данных / платформ.
Меня также интересуют любые техники манула.
Кто-нибудь еще имеет эту проблему?
Кому-нибудь будет интересно, если я напишу такой инструмент?