Я не уверен, что это за процедура - этот вопрос в значительной степени является прямым продолжением this one. Однако было введено новое требование, которое может потребовать совершенно другого решения. Такова жизнь.SQL self join для родительских, дочерних и сиротских строк
Просмотреть новый SQLFiddle.
Исходное решение выбрало все элементы для данного идентификатора клиента, если только этот элемент не был заменен «дочерним» элементом, как указано «идентификатором родительского элемента».
Это прекрасно подходит для элементов, которые являются клиентами обычных элементов.
Однако теперь мне нужно управлять элементами, специфичными для клиента, которые не являются детьми обычных элементов. И исходный запрос не извлекает их.
Я добавил строку «NewThing» в таблицу - с идентификатором клиента и без идентификатора parent_element, но для его получения мне нужно объединиться с другим выбором. Я знаю, что это, вероятно, не лучший способ сделать это, но не может понять, как изменить исходный запрос.
Так, в приведенном выше SQLFiddle, как я могу написать один запрос SQL, который будет принимать параметр «идентификатор клиента» (который может быть NULL) и возвращает:
- Для клиента ID 1, строки 2 , 4 и 5
- Для идентификатора клиента 2, строки 3 и 4
- Для идентификатора клиента 42, строки 1 и 4
- для идентификатора клиента NULL, строки 1 и 4