2013-12-24 3 views
0

У меня есть таблица в базе данных MySQL с магазинами и днями. Мне нужно проверить, открыт ли магазин в этот день.праздники в mysql для нескольких магазинов

Перед тем, как проверить, открыт ли магазин, следуя этому методу: Find next time business is open; mysql hours calculation Мне нужно проверить, находится ли магазин в какой-то праздник, прежде чем проверять, открыт он или нет.

ли хорошо иметь таблицу:

магазин ID | Дни

xxx | номер, номер, номер и т. д.

что запрос (написанный на PHP) проверяет, содержится ли [yday] в строке Days (строка значений, разделенных запятой)? Идентификатор магазина будет внешним ключом в таблице «Магазины», и приложение всегда будет знать заранее, какие магазины запускают этот запрос, а не наоборот.

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

Edit 1

Учитывая также влияет на производительность запроса следующим образом, рассмотрев @GordonLinoff ответ как лучшее решение:

$ShopId = //a POST or GET 
$day = //a POST or GET 

$query = mysqli_query($con,"SELECT day FROM table WHERE ShopId = '$ShopId' AND day = $day"); 

if(mysql_num_rows($query)== 0){ 
    echo "Shop open"; 
} 
else{ 
echo "Shop closed"; 
} 

mysqli_close($con); 

ответ

2

Вы бы иметь одну таблицу со строкой для каждого магазина и каждый праздник. Таким образом, строка будет следующей:

ShopId Day 
xxx number 
xxx number 
xxx number 

Вы можете легко проверить включение в эту таблицу с помощью SQL. И это будет довольно эффективно, если у вас есть индекс на (ShopId, Day).

+0

Извините, если я воспользуюсь вашими знаниями. Когда создание таблиц в каждом магазине представляет проблему (скажем, тысячи магазинов)? Кроме того, почему бы мне создать индекс на обоих столбцах, а не только на день, ведь идентификатор магазина будет точно таким же на всей таблице. – user3132821

+0

Вы будете создавать один стол, а не одну таблицу в магазине. –

+2

Вы не создаете таблицы для каждого магазина. Вы создаете одну таблицу. Если вы не знаете о нормализации базы данных, я хорошо слышал о книге «Дизайн базы данных для простых смертных». –

Смежные вопросы