2017-12-22 8 views
0

저는 중앙 아메리카의 한 작은 클리닉을위한 데이터베이스를 만들고 있습니다. 데이터베이스에는 일련의 예 또는 아니오 질문에 대한 수십 개의 필드가있는 "방문"테이블이 있습니다.SQL에 값을 Y 또는 N으로 표시하는 방법은 무엇입니까?

SQL에서 이진 값을 저장하는 최선의 방법은 비트 데이터 형식 (x)을 사용하고 있지만 "Y"또는 "Y"에 char (1) 데이터 형식을 사용할 수도 있다는 것을 알고 있습니다. N "더 많은 공간 (x)을 사용하여 균형을 맞 춥니 다.

원래 비트 데이터 형식을 사용하고 예를 1, 아니요를 0으로 저장할 계획 이었지만이 디스플레이를 PHP에서 Y 또는 N으로 표시하는 방법을 모르겠습니다.

현재 별도의 표에, I는 0 또는 1로서 저장 HIV 및 당뇨병에 대한 값을 갖고 I 수행 내측 N.에 Y 1 0 관련된 두 개의 테이블 내 SQL 선택 문장 조인

이 기술을 계속 사용하려면 1을 Y와 0을 N으로하는 수십 개의 테이블을 만들어야합니다. 이는 비효율적이며 매우 중복되는 것처럼 보입니다.

테이블의 여러 열을 1에서 Y 및 0에서 N까지 관련된 하나의 테이블과 연관시키는 방법이 있습니까? PHPmyadmin을 사용하고 있습니다.

+3

예, 동일한 "조회"테이블을 참조 할 수있는만큼 많은 테이블의 열을 가질 수 있습니다. 특별한 구문이 필요하지 않습니다. 즉, 두 값 조회 테이블의 문제를 철저히 조사하기보다는 간단한 표현식으로 이러한 필드를 선택할 수도 있습니다. 'SELECT CASE someField 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도 사용할 수 있다고 변경하지 않으려는 경우) true 또는 false 값을 변환하여 PHP를 사용하여 true 및 false로 변환합니다. 사용자가이 같은 결과를보고 싶어 거짓 N은 :

<?php 

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

?>