2012-05-29 4 views
0

멍청하거나 간단한 질문인데 죄송합니다. 해결책을 찾지 못했습니다. 이런 종류의 작업에 대한 이름을 모르는 것 같습니다.MySQL - 데이터베이스의 모든 항목에 데이터를 추가하는 명령?

"카드"테이블이있는 MySQL 데이터베이스가 있습니다.

카드의 캐스팅 비용은 0 ~ 5 색입니다. 5 열, 각 가능한 색 각각에 대한 부울을 포함하도록 카드 테이블의 모든 항목을 업데이트하고 싶습니다. 그래서 카드의 색상을 분석하고 그에 따라 5 개의 부울 색상 값을 채우는 간단한 알고리즘이 필요합니다.

PHP 스크립트로이 작업을 수행하는 방법을 상상할 수 있지만 순수 MySQL을 사용하여 작업해야하는 방법이 있어야한다고 생각했습니다. 내가 잘못 본 건가요? 아니면이 유형의 스크립트에 대한 이름이 있습니까?

+0

당신이 우리에게 몇 가지를 보여줄 수

그렇다면 후, MySQL의의 FIND_IN_SET() 기능은있어 무엇을 제공해야 데이터가 어떻게 생겼는지, 예상되는 결과는 무엇입니까? – Daan

+0

나는 어느 쪽도 확실하지 않다. 우리는 더 많은 정보가 필요할 것이다. 당신은 더 구체적 일 수 있습니까? – jcho360

답변

2

귀하의 질문에 귀하의 card 테이블에 현재 casting cost이라는 열이 포함되어 있다는 것을 이해합니다. 'red,green' 또는 'blue,orange,yellow'이고 가능한 색이 casting cost인지 여부를 나타내는 부울 열을 생성하는 쿼리를 찾고 있습니까? 당신이 영구적 열을 포함하는 테이블을 변경하려면

SELECT *, 
     FIND_IN_SET('red', `casting cost`) > 0 AS red, 
     FIND_IN_SET('blue', `casting cost`) > 0 AS blue, 
     FIND_IN_SET('green', `casting cost`) > 0 AS green, 
     FIND_IN_SET('orange', `casting cost`) > 0 AS orange, 
     FIND_IN_SET('yellow', `casting cost`) > 0 AS yellow 
FROM card 

가 :

ALTER TABLE card 
    ADD COLUMN red BOOLEAN NOT NULL DEFAULT FALSE, 
    ADD COLUMN blue BOOLEAN NOT NULL DEFAULT FALSE, 
    ADD COLUMN green BOOLEAN NOT NULL DEFAULT FALSE, 
    ADD COLUMN orange BOOLEAN NOT NULL DEFAULT FALSE, 
    ADD COLUMN yellow BOOLEAN NOT NULL DEFAULT FALSE 

UPDATE card SET 
    red = FIND_IN_SET('red', `casting cost`) > 0, 
    blue = FIND_IN_SET('blue', `casting cost`) > 0, 
    green = FIND_IN_SET('green', `casting cost`) > 0, 
    orange = FIND_IN_SET('orange', `casting cost`) > 0, 
    yellow = FIND_IN_SET('yellow', `casting cost`) > 0 
+0

이 트랙이 맞다고 생각합니다. 고마워요! 나는 "캐스팅 비용"으로 더 분명 해졌어야했는데, 형식은 빨강, 초록, 파랑의 "RGB"와 비슷할 수도 있습니다. 쉼표가 없으므로 적절한 세트가 아닙니다. – Bing

+1

@myingling :이 경우 대신 [[LOCATE()'] (http://dev.mysql.com/doc/ko/string-functions.html#function_locate)를 사용해야합니다. 예 : ''LOCATE ('R','casting cost')> 0'' – eggyal

+0

아름답다, 고마워! – Bing

관련 문제