메시지가 포함 된 데이터베이스가 있습니다. 메시지는 한 테이블에 저장되고 사용자 정보는 다른 테이블에 저장됩니다. 메시지 테이블에는 사용자 테이블의 작성자 user_id를 나타내는 author_id 열이 있으며 모든 메시지 열이 있으며 사용자 테이블의 "u_"+ user_id의 연결을 나타내는 to_address가 있습니다. 이 두 테이블을 조인 할 수있어 author_id와 to_address 모두에 ID 대신 사용자 이름을 표시합니다.2 열 = 1 열에 두 번 mysql 테이블 가입하기
나는 그런
SELECT
(SELECT username
FROM users
INNER JOIN msgs
ON user_id=author_id
) AS "From",
(SELECT username
FROM users
INNER JOIN msgs
ON CONCAT("u_",user_id)=to_address
) AS "To",
(SELECT timestamp(message_time) FROM msgs
) AS "Sent",
(SELECT message_subject FROM msgs
) AS "Subject",
(SELECT message_text AS "Message" FROM msgs
) AS "Message"
으로 하위 쿼리를 사용하여 시도 및 "하위 쿼리는 1 개 이상의 행을 반환"있어 명백한 오류 와
SELECT username, ..., username
FROM msgs
INNER JOIN users
ON user_id=author_id AND concat("u_",user_id)=to_address;
을 시도했습니다. 이 작업을 성공적으로 수행 할 수있는 방법이 있습니까? 다른 이름 테이블의 각 인스턴스를 제공
SELECT
from_user.username AS "From",
to_user.username AS "To",
timestamp(msgs.message_time) AS "Sent",
msgs.message_subject AS "Subject",
msgs.message_text AS "Message"
FROM msgs
INNER JOIN users AS from_user
ON msgs.author_id = from_user.user_id
INNER JOIN users AS to_user
ON msgs.to_address = CONCAT("u_", to_user.user_id);
기본적으로, 당신은 두 번 msgs
테이블에 users
테이블에 가입하고 다른이 조인 조건 : 당신이 뭔가를 원하는 것처럼
편집 해 주셔서 감사합니다. 나는 그저 일하고 있었다. 말할 필요도없이, StackOverflow에 익숙하지 않습니다. –
[공백으로 코드 서식 지정] (http://meta.stackexchange.com/questions/22186/)에는 공백을 4 줄 들여 쓰기 할 수 있습니다. 에디터 툴바에있는 "{}"버튼은 이것을 처리합니다. 포맷팅에 대한 더 많은 정보와 팁을 원하면 편집기 툴바에서 주황색 물음표를 클릭하십시오. 뭔가를 사용하기 전에 도움말을 읽는 것이 좋습니다. – outis