Я относительно новичок в программировании SQL, поэтому, пожалуйста, пройдите на меня.SQL Left/Inner/Normal Join vs Where while условное утверждение
В настоящее время я пишу запрос, который выводит результат на основе значения из одного из внешних параметров. Структура в настоящее время выглядит как следующее:
@ShowEntireCategory bit = 0
select distinct
p.pk
p.name
--other columns
from dbo.Project P
--bunch of left joins
where p.Status = 'Open'
--other conditions
То, что я пытаюсь выполнить: когда значение ShowEntireCategory является 1 (изменено программным путем выбора RadioButton) он покажет запись всех подкатегорий, которые находятся внутри категории. Когда он равен 0, он будет показывать только записи из выбранной подкатегории, в то время как другие подкатегории в этой категории остаются нетронутыми.
Я выполнял a research на лучший подход, и это narrowed down либо к WHERE заявления или JOINs.
Что я хочу знать: какой из этих подходов я должен использовать для своего сценария? В моем случае приоритетом является оптимизация (минимальное время выполнения) и простота реализации.
Примечание: Моя главная цель здесь не получить готовый к использованию код здесь (хотя приведен пример фрагмента кода будет приветствоваться), я просто хочу знать, лучший подход, так что я могу продолжать исследования в этом направлении ,
Спасибо заранее!
UPDATE
Я выполнил дополнительные исследования на структуре базы данных, и удалось сузить параметры, имеющие отношение к вопросу
One является dbo.Project таблица, которая содержит: PK, CategoryKey (FK) (подключен ко второй таблице), Имя, Описание и все другие параметры, которые не имеют отношения к делу.
Второй столбец dbo.Area, содержащий: PK, AreaNumber, Name, CategoryKey (FK), IsCategory (1 = категория, 0 = не категория).
Извините, но я работаю в быстро меняющейся среде, это столько, сколько я смог сжать. Пожалуйста, дайте мне знать, если этого недостаточно.
Это будет зависеть от того, как категории и подкатегории хранятся в базе данных. – BrandonM
@BrandonM Уточнить? Единственный способ, которым я могу ответить прямо сейчас, - «4 подкатегории в пределах 1 категории, причем каждая подкатегория имеет свой собственный идентификатор». –
Можете ли вы предоставить структуру своих таблиц и некоторые данные образца?Идеализируйте как sql-инструкции, чтобы мы могли настроить среду для тестов. – Philipp