2015-01-05 3 views
1

제목에 하나의 열로 비어 있지 않은 패시브, Q, W, E, R 중에서 행을 선택하려고하고 있습니다. http://i.imgur.com/SzNl9WI.png 여기에 제가 시도한 내용이 있습니다. 내가여러 열의 여러 행을 하나의 열로 선택

SELECT column_name 
         from information_schema.columns, patches.champions 
         where 
         table_name = 'champions' 
         AND ((column_name ='Passive' and Passive!='') 
         or (column_name='Q' and Q!='') 
         or (column_name='W' and W!='') 
         or (column_name='E' and E!='') 
         or (column_name='R' and R!='') 

         ) 

         AND Patch_No = '0.02' 
         AND Champion = 'Katarina' 

편집이 네가 윌리엄 이니 비어 있지 않은 열 이름을 선택 잘 작동 내 이전 쿼리와 통합 할 수 있다면 행운과 아직

SELECT (Passive + Q + W + E + R) AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' 
AND (
(Passive!='') 
or(Q!='') 
or(W!='') 
or(E!='') 
or(R!='') 
) 

그것은 더 나은 것 Y는 나에게 올바른 결과를 제공하지만, 1 행에 나는 결과가

SELECT CONCAT(Passive, Q, W, E, R) AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' 
AND (
(Passive!='') 
or(Q!='') 
or(W!='') 
or(E!='') 
or(R!='') 
) 
+1

을 사용할 수 있습니다 샘플 데이터와 원하는 결과를 질문하고 보여줍니다. –

+0

더 좋지만 SQL Fiddle (http://sqlfiddle.com/) 링크를 추가 해보십시오. – Jonny

답변

2

이 시도 별도의 행에 있어야 할 : 편집하십시오

SELECT Passive AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' AND 
     Passive IS NOT NULL AND Passive != '' 
UNION 
SELECT Q AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' AND 
     Q IS NOT NULL AND Q != '' 
UNION 
SELECT W AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' AND 
     W IS NOT NULL AND W != '' 
UNION 
SELECT E AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' AND 
     E IS NOT NULL AND E != '' 
UNION 
SELECT R AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' AND 
     R IS NOT NULL AND R != '' 
+0

추가 한 편집 내용 확인 – higeat

+0

게시 된 쿼리와이 쿼리를 결합 할 수있는 방법이 있습니까? 문제의? – higeat

+0

http://pastebin.com/1wYL7zub 좋은 결과를 얻을 수있는 코드는 동일한 양의 결과를 가진 2 개의 루프를 거치지 않아도됩니다. 그리고 그것은 이상한 것 같아요. 이제는 'ssssssssss'를 바인딩하고 동일한 10 개의 변수를 바인딩해야합니다. – higeat

0

당신은 CONCAT

SELECT CONCAT(Passive, Q, W, E, R) AS spellchamps 
FROM champions 
WHERE Patch_No='0.02' AND Champion = 'Katarina' 
AND '' NOT IN (Passive, Q, W, E, R) 
관련 문제