2013-09-11 6 views
0

У меня есть таблица «Cinema» с Cinema_ID как моя ПК и все места в виде столбцов с битом типа данных (1 = забронировано, 0 = доступно), например. Cinema_ID, A1, A2, A3, A4, A5, B1, B2, B3, B4, B5, ..., E5. Можно ли считать только столбцы со значением строки 1?Чтобы получить количество столбцов с определенным значением в одной строке

+2

Это будет намного проще, если вы нормализуете свою таблицу в третьей нормальной форме (преобразуйте все столбцы A1..En в одно место в столбце). – GriGrim

+0

Thanx для комментирования так быстро. Я сделал это в первый раз, когда у меня был стол «Сидения», но это только дает мне больше строк и дополнительную колонку «Забронировано», поскольку у меня есть 10 кинотеатров, и, если скажут, что A1 получает забронированные билеты для всех 10 кинотеатров. нужно создать 10 столов для каждого кинотеатра.? Его для 3-летнего проекта в Uni, и они не хотят больше, чем 5 таблиц. У меня уже есть 3 .. –

+0

На веб-сайте, соединяющем db, есть диаграмма сидения, и когда он щелкнул, он записывает место. –

ответ

0

Кроме того, что @GriGrim говорит о дизайне вы можете преобразовать значение бита в ряд, а затем добавить результаты:

SELECT ID, CONVERT(int, Bit1) + CONVERT(int, Bit2) + CONVERT(int, Bit3) BookedSeats FROM tblTemp 

Это будет работать, потому что все битовые значения для true представлены как 1 и все значения для false: 0.

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

+0

Большое вам спасибо, работает красиво! XD –

0
select 
cinema_id, 
sum(case when A1=1 then 1 when A2=1 then 1 ... end) as counts from Cinema 
group by cinema_id 
+0

Большое вам спасибо, работает красиво! xD –

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