2011-02-08 4 views
0

Я хочу запросить таблицу ниже, чтобы вернуть заголовки столбца, где пересечение SessionId и Roomx равно 0. Тип комнаты - это TINYINT - который в mysql представляет БУЛЕВЫ, возвращающее имя столбца с логическим значением 0

Ниже приводится таблица:

SessionId Room1 Room2 Room3 
    1   0  1  0 
    2   1  0  1 

для приведенных выше таблиц, например, для SESSIONID 1, запрос должны вернуть Room1 и room3 Помощи будет оценен. Спасибо.

+3

Похоже приложения логики для меня. –

+0

@ Дан Гроссман согласен. – Nishant

ответ

1

Это выглядит как стол, нуждающийся в редизайне. Судя по именам столбцов, «объекты» (строки), которыми вы должны иметь дело, - «События»: происходит событие в a Room, во время раздел. С этой установкой, ваша таблица будет выглядеть следующим образом:

session_id room_id 
1   2 
2   1 
2   3 

Теперь есть еще не запрос, который даст вам номер, которые не являются в использовании во время данной сессии, но это легко найти те, что являются:

SELECT room_id FROM events WHERE session_id = <whatever> 

И это легко сочетать, что со списком всех возможных номеров, чтобы получить необходимую информацию.

Надеюсь, это поможет!

PS: Если у вас есть rooms таблицу, а также (я бы не добавить один раз для этого, но если вы случайно есть), это становится еще проще:

SELECT id FROM rooms WHERE NOT EXISTS (SELECT * FROM events WHERE room_id = id AND session_id = <whatever>) 
+0

попробует это, сообщит вам, разрешит ли он это. – watkib

-2
SELECT column_name FROM information_schema.columns WHERE table_name = 'tabel Name' 
+0

Не то, что он просил –

+0

@ Dan Grossman Спасибо, но что вы подразумеваете под логикой приложения? @Poonam Bhatt не совсем – watkib

+0

Логика, которая принадлежит коду вашей программы, а не в запросе базы данных. –

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