2012-05-17 3 views
4

PHP를 사용하는 대신 데이터베이스에서 직접 작업을 시도하는 것과 관련하여 또 다른 질문이 있습니다.MySQL에서 조건이 충족 될 때 필드 값 대신 문자열을 반환합니다.

예를 들면 다음과 같습니다. 테이블에 m/ id | by | msg ID가 있습니다.이 ID는 누가 수행했는지, 메시지는 무엇입니까? by 필드는 이름을 저장하는 다른 테이블에 연결된 정수입니다. 결과의 관계로

SELECT m.id, m.msg, user.name FROM m LEFT JOIN user ON m.by = u.id 

, 예를 들면 : 일반적으로 나는 두 개의 테이블을 조인 왼쪽 것이다

1 | Hello World | Richard 
2 | Foo Bar  | Some else 
3 | Howdy  | Richard 

나는 리처드 야하고

user.id=4가 결과 관계가 할 수 있는가가 user.id = (int)이 충족되는 Richard 대신 you을 표시 하시겠습니까?

+0

을 정의? 즉 당신이 지금 = user.id 4 – ManseUK

+0

PHP에서 얻은 변수입니다. – stUrb

+0

그럼 [이 답변] (http://stackoverflow.com/a/10639768/572939) 및 '123'을 PHP 변수로 바꾸면 작동합니다 – ManseUK

답변

4
SELECT m.id, m.msg, IF(user.id = 4, 'you', user.name) AS name 
FROM m LEFT JOIN user ON m.by = user.id 
+0

사용자 ID 변수를 만들기 위해 쿼리를 조금만 조정했습니다. 'IF (user.id = : by,'you, user.name) '를 PDO에서 사용할 수 있습니다. 감사! – stUrb

3

이처럼 수행 여기서 "당신은"

SELECT m.id, m.msg, 
(case when user.id = 4 then 'You' 
else user.name end) as username 
FROM m LEFT JOIN user ON m.by = u.id 
관련 문제