2011-03-29 4 views
1

함으로써 그래서 나는이 테이블에 수동이 :맞춤 주문 + 그룹

id lang header_name  text   
1 uk  Youth Development It's very important 
2 dk  tst    hejsa 
3 uk  tst    hello sir 

을 그리고 주어진 언어에 대한 모든 수동 항목 (이 경우 덴마크어)을 가져 오는 쿼리를 만들고 싶어. 어떤 이유에서든 원래의 수동 항목 (영국 항목)의 100 %가 전부 번역 된 것은 아니며 번역되었으므로 대신 영어 항목을 가져오고 싶습니다. 테이블 형식에서도 가능합니까?

"group by header_name"과 (와) 같은 일이있을 것이라고 생각합니다.

+0

당신은 당신이 원하는 출력 지정할 수 있습니까? –

+0

그래, 이미 ID가 3을 제외하고 위의 "dk"언어로. –

+0

내 문제는 "order by"가 "group by"다음에 실행된다는 것입니다. 두 함수 (union 및 embedded query)를 사용하여 수행하려는 경우,하지만 조금 지나치게 잔인한 지 알지 못합니다. (단지 내 PHP 코드를 더 예쁘게 만들고 싶다) –

답변

1

시도해보십시오 이들을 구별하기 별칭을 사용할 난 SQL 해달라고 따라서이 이 테이블 T1은 T2는 T3가 동일한 테이블을 참조 테스트되지 않고

select * from t3 
where t3.lang IN ('DK','UK') 
and t3.ID NOT IN 
(select t1.id 
FROM t1,t2 
where t1.header_name = t2.header_name 
AND t2.lang = 'DK' 
AND t1.lang = 'UK' 
) 

본질적 제 Y 번역이 포함 된 ID를 찾아서 제외해야합니다.

+0

네, 그 중 하나가 작동했습니다 :) 고마워요. 나는 이것과 비슷한 것을 가졌습니다 SELECT * FROM'userguide' WHERE lang = 'dk'union all select * from userguide WHERE lang = 'uk'와'header_name'이 아닌 userguide에서 lang = 'dk') by'header_name' –

0

댓글을 달 수는 없지만 묻고 싶은 부분은 다음과 같습니다. 방금 ​​올려 놓은 예제에서 ID가 2 인 행과 ID가 3 인 행은 다른 언어로만 같은 항목입니까?

이드 당신이 그것을 빼고 두 테이블

Example 
id 
sort 
(all other generic columns) 

example_translations 
id 
example_id 
language_id 
header_name 
text 

을 말하고 그 다음이 개체의 example_translations 행을 돌아갑니다 ID 1 예의 덴마크어 번역 쿼리 경우. 아무 것도 반환하지 않으면 영어 버전을 쿼리 할 수 ​​있습니다. 내가 그나마

, 당신은 덴마크 내용이 누락 된 경우 영어 콘텐츠를 원하는 것이

0

내가 이것을 이해하는 방법 MySQL의 수준에 같은 것을 할 수 있습니다 생각? .. 당신은 추가 할 수 있습니다 항목을 표시하는 표에 항목을 추가하십시오. (당신의 "header_name"칼럼이 당신을 위해 그 일을 잘 수행하는지 모르겠다. 나는 번역 될 것이라고 짐작하고있다. ..

어쨌든 "entry_id"라는 이름의 "tst dk"와 "tst uk" 예를 들어 둘 다 id가 "2"이면 수동으로 "entry_id"를 요청하고 dk 항목을 먼저 찾은 다음 dk 항목이없는 경우 uk 항목을로드해야합니다.

1

이 트릭을 할 수 있지만, 최적화되지 않습니다

SELECT * 
FROM the_table 
WHERE lang = 'dk' 

UNION 

SELECT * 
FROM the_table 
WHERE lang <> 'dk' AND header_name NOT IN (
    SELECT header_name 
    FROM the_table 
    WHERE lang = 'dk' 
) 
관련 문제