Усовершенствованный дизайн SQL-запросов

0

У меня есть таблица с продуктами, и пользователь может выбрать, в каких регионах и городах он хочет позволить им быть видимыми. Он может выбрать ВСЕ РЕГИОНЫ и ВСЕ ГОРОДА из раскрывающегося меню, а затем я поставлю столбцы = 0.

Покупатели могут выбрать, в каком городе они хотят смотреть товары, поэтому у них есть раскрывающееся меню, чтобы выбрать регион и/или город. и они также могут выбирать товары из ВСЕХ РЕГИОНОВ и/или городов.

Вопрос в том, как будет выглядеть этот расширенный запрос.

  • Если продавец нажал на один конкретный регион, но все города, то, если покупатель выбирает этот регион, он может выбрать какой бы город он ни захотел. этот продукт будет отображаться.

  • Покупатель может вместо выбора города выбрать ВСЕ ГОРОДА. например. то он увидит все темы, несмотря на то, в какой город они отправили.

Я новичок в SQL, поэтому было бы хорошо, если бы вы посоветовали мне выбрать правильные команды для этого запроса. Это было немного сложно для меня, я не знаю, с чего начать.

  • 0
    показать код, уже использованный для обеих сторон
  • 1
    И ваши таблицы структур для продуктов, регионов и городов
Теги:
database

1 ответ

3
Лучший ответ

Думаю, я понимаю, что вы имеете в виду. В вашем запросе могут быть два аргумента: один для города и один для региона.

В раскрывающемся меню города, если пользователь выбирает город, скажем, в Лос-Анджелесе, тогда аргумент @city будет содержать город (скажем, код типа LAX). Если они выбирают "Все города", то аргумент @city будет иметь значение NULL.

То же самое для области.

Тогда ваш запрос может выглядеть примерно так:

SELECT ...
FROM city_tbl
INNER join region_tbl ON ...
WHERE ( @city IS NULL or @city = city_tbl.city_code )
AND   ( @region IS NULL or @region = region_tbl.region_code )
AND ...

Итак, если они выбрали "Все города", @city будет NULL, и они увидят все, иначе их выбор конкретного города должен быть сопоставлен с city_tbl.city_code.

Я подозреваю, что у вас есть что-то более сложное в виду, но, надеюсь, это на правильном пути.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню