2014-12-04 1 views
0

Physicians의 이름이 포함 된 테이블 PHYSICIANSmySQL이 있습니다.mySQL - 쿼리의 개별 이름에 색상 추가

나는이 의사들 각각에게 asign specific colors으로 연락하기를 원합니다.

저는 여러 데이터베이스에서이 작업을 수행하고 의사 이름이 다르거 나 의사의 수 또한 달라지기 때문에이를 동적으로 만들고 싶습니다.

필자는 직접 의사 이름을 입력하고 여기에 색상을 할당하는 다른 방법을 모르겠다. 다른 방법으로 알고있는 사람이 있습니까?

#FF0000,#800000,#FFFF00,#808000,#00FF00,#008000,#00FFFF,#008080,#0000FF,#000080,#FF00FF,#800080 

SELECT PHYS_ID, color 
from 
(
    Select PHYS_ID 
    From PHYSICIANS 
    Where PHYS_ID != 0 
    Order By PHYS_ID 
) Physicians, 

(
    SELECT '#FF0000' as color 
UNION 
    SELECT '#FFFF00' 
UNION 
    SELECT '#808000' 
UNION 
    SELECT '#00FF00' 
UNION 
    SELECT '#008000' 
UNION 
    SELECT '#00FFFF' 
UNION 
    SELECT '#0000FF' 
UNION 
    SELECT '#000080' 
UNION 
    SELECT '#FF00FF' 
UNION 
    SELECT '#800080' 
    FROM DUAL 
) colors 
+0

그래서 당신의 의사 테이블하는 int 앞에'colors' 필드를 넣어 각 레코드에 그 색상 중 하나를 할당 ... –

+0

나는 테이블을 조작 할 수 :(내가 쿼리에서 그것을해야 – Angelina

+0

다음 필드를 새 테이블에 넣습니다. 키 필드가있는 경우 PHYS_ID가 같은 경우 – LHristov

답변

1

좋아, 당신은 아무것도를 변경할 수없는 경우에, 당신은 의사의을, 기본적으로 ELT()

SELECT PHYS_ID, ELT(MOD(PHYS_ID, N)+1, '#color1', '#color2', ...., '#colorN') 
           ^----------------------------------------^ 

같은 것을 사용하여 시도해 볼 수도 있습니다 :

이 내가 사용하고자하는 색상은 ID, 가지고있는 색깔의 수를 모듈로. 예 : 5 개 색상에 대한 :

id 3 mod 5 -> 3 
id 30 mod 5 -> 0 
id 31 mod 5 -> 1 

ELT(3 + 1, ...) -> color4 
ELT(0 + 1, ...) -> color1 
ELT(1 + 1, ...) -> color2 
+0

정말 고마워요. – Angelina