У меня есть таблица db2, в которой хранятся названия брендов.В каждой строке у нас есть идентификатор поставщика и страна.Так что я могу использовать это для фильтрации брендов.Теперь строки также содержат идентификатор клиента и группу.Либо клиент заполнен (и группа NULL), либо группа заполнена (и клиент NULL), либо они оба имеют значение NULL.
Я пытаюсь сделать следующее: получить все строкикоторые соответствуют этому конкретному поставщику и стране, но со специальным фильтром для клиента и группы.Если у меня есть только строки с NULL в обоих полях, возвращает все эти строки.Если в некоторых строках указана группа, то возвращаются только строки с этой группой (и игнорируются те, в которых указана группа NULL), НО, если в некоторых строках указан клиент, тогда возвращаются только строки с указанным клиентом и игнорируются остальные (строкис группой или строками с NULL NULL)
Это возможно в SQL, особенно в DB2, или мне нужно получить ВСЕ строки и отфильтровать их позже во время обработки?(в данном случае, PHP)
Поскольку вы, ребята, хотите, чтобы я показал некоторый код, вот что я придумал, после некоторых исследований (никогда раньше не использовал "WITH")
https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=e7a54ff6eec8ed4be2594644ba3224bd
РЕДАКТИРОВАТЬ: Наконец-то все заработало самостоятельно, не знаю, будет ли это лучшим способом сделать это, хотя
https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=ce7c99d8a37e3dad90900440127730e4
РЕДАКТИРОВАТЬ 2: я объединил 3 подзапроса в 1 с помощью CASE, я думаюэто лучше, но я не уверен.
https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=b581532553b5619d9cdc388d54619836