2011-02-08 5 views
0

SessionIdとRoomxの交点が0のカラムのタイトルを返すように、以下のテーブルを照会します。ルームのタイプはTINYINTです。これはmysql BOOLEANブール値が0のカラムの名前を返す

以下

がテーブルで表します

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

のSessionId 1のために例えば上記の表では、クエリがROOM1とRoom3 ヘルプを返すべきことはあまり理解されるであろう。おかげさまで

+3

は、アプリケーションのような音私には論理。 –

+0

@ダン・グロスマンは同意します。 – Nishant

答えて

1

私は再設計が必要なテーブルのようです。列名で判断すると、 "オブジェクト"(行)は "イベント"です。イベントはに、の間はセクションになります。

session_id room_id 
1   2 
2   1 
2   3 

今すぐあなたには、特定のセッション中に使用されていない部屋をあげるクエリはまだないが、それはものを見つけるのは簡単だ。その設定で、あなたのテーブルは次のようになります。

SELECT room_id FROM events WHERE session_id = <whatever> 

そして、それはあなたが必要な情報を取得するために可能なすべての部屋のリストとその組み合わせをするのは簡単です:それです。

希望すると便利です。

PS:あなたは(私はこれのための1つを追加しないだろうが、あなたは1を持っているために起こっている場合)にも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 not quite – watkib

+0

データベースのクエリではなく、プログラムのコードに属するロジック。 –