2017-12-22 5 views
0

私は中米の小さな診療所のためのデータベースを作成しています。データベースには、一連のイエスまたはノー質問のための数十のフィールドを持つ「訪問」テーブルがあります。SQLに値をYまたはNとして表示する方法は?

SQLでバイナリ値を格納する最良の方法は、ビットデータ型(x)を使用していることがわかっていますが、char型のデータ型( "Y"または "より多くのスペース(x)を使用することのトレードオフで「N」になります。

元々、ビットデータ型を使用し、yesを1、noを0として保存する予定でしたが、この表示をPHPでYまたはNとする方法はわかりません。

現在、別のテーブルに、私は0または1として保存HIVや糖尿病の値を持っていると私は実行インナーNにYに1と0を関連する二つの別々のテーブルに私のSQLのSELECT文に参加

このテクニックを続けるなら、1にY、0をNに関連づけた数十のテーブルを作る必要があります。これは非効率的で非常に冗長なようです。

テーブルの複数の列を、1からY、0からNに関連する1つのテーブルに関連付ける方法はありますか?私はPHPmyadminを使用しています。

+3

はい、同じ「ルックアップ」テーブルを参照するテーブルと同じ数のテーブルから多くの列を持つことができます。特別な構文は必要ありません。つまり、2つの値のルックアップテーブルの問題を徹底的に調べるのではなく、簡単な式でそのようなフィールドを選択することもできます。 'SELECT CASE someField WHEN 1 THEN 'Y' ELSE 'N' END as someFieldYN' – Uueerdo

+0

また、おそらく私はBITタイプを気にしません。 TINYINTは、(もしあれば)それ以上のスペースを大幅に取らない可能性があり、作業するのがはるかに容易になるでしょう。 – Uueerdo

+0

'echo $ row ['field']? 'Y': 'N'' ... – deceze

答えて

1

に関しては、あなたは小さな診療所のための表スペースを節約するためにスクランブルする必要はありません。メンテナンスが容易な方法でプログラムを作成してください。

単純な列タイプの代わりにビットを使用することで、おそらく数万バイトの節約になります。 (=何も測定できない)。

int(tinyint?)のフレーバーを使用すると、クエリのテキストに変換できます。

SELECT IF(column=1,'Sí','No') column 

などです。

0

状態を保存するためにブール型のデータ型を使用します(1と0を使用することを変更したくない場合)。真と偽の値を変換して真のYを表示するためにphpを使用します。ユーザーは次のように結果を見たい偽Nは:

<?php 

$stateFromDB; //Get it from db 
if($stateFromDB == true){ 
    echo "Y"; 
}else{ 
    echo "N"; 
} 

?> 
関連する問題