2013-05-30 4 views
1

아래의 두 쿼리를 결합 할 수 있습니까? 목표는 PHP에서 Speaker 및 Organizer 변수를 만드는 것입니다 (아래 참조). 감사!2 개의 쿼리를 결합한 MySQL

$query= " 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mSpeaker"; 

$query= " 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mOrg"; 


$Speaker = $row['uFirst'] . " " . $row['uLast']; 

$Organizer = $row['uFirst'] . " " . $row['uLast']; 

답변

1

회의에는 단일 발표자와 단일 이끌이가 있다고 가정하면 참여를 사용하여 단일 행의 회의 세부 정보를 얻을 수 있습니다.

$query= "SELECT srMeet.mOrg, 
      srMeet.mSpeaker, 
      UserSpeaker.uID AS SpeakerUid, 
      UserSpeaker.uFirst AS SpeakerFirst, 
      UserSpeaker.uLast AS SpeakerLast, 
      UserOrganizer.uID AS OrganizerUid, 
      UserOrganizer.uFirst AS OrganizerFirst, 
      UserOrganizer.uLast AS OrganizerLast 
     FROM srMeet 
     INNER JOIN users UserSpeaker 
     ON UserSpeaker.uID = srMeet.mSpeaker 
     INNER JOIN users UserOrganizer 
     ON UserOrganizer.uID = srMeet.mOrg"; 
+0

완벽한, 감사합니다! – user1041931

0

UNION

$query= " 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mSpeaker 
UNION 
SELECT srMeet.mOrg, srMeet.mSpeaker, users.uID, users.uFirst, users.uLast 
FROM srMeet 
INNER JOIN users 
ON users.uID = srMeet.mOrg" 
+0

하지만 어떻게하면 필요한 두 가지 값을 얻을 수 있습니까? 이전에는 "users.uFirst AS 'SpeakerFN'"과 같은 것을 사용했지만 어떻게해야할지 모르겠습니다. – user1041931

1

당신은 쿼리에서 동일한 테이블을 여러 번 가입하고 AS을 사용하여 그들에게 별칭을 제공 할 수 있습니다 사용하지 마십시오. AS 키워드는 실제로 선택 사항이지만 항상 내 노트로 포함합니다.

여기에서 INNER JOIN은 각 회의에 주최자와 발표자가 있어야 함을 의미합니다. 주최자 나 발표자가없는 회의가있을 경우 LEFT OUTER JOIN을 사용하고 NULL 값을 처리하는 것이 좋습니다.

SELECT CONCAT(s.uFirst, ' ', s.uLast) AS speaker, 
    CONCAT(o.uFirst, ' ', o.uLast) AS organizer 
FROM srMeet 
INNER JOIN users AS s 
ON users.uID = srMeet.mSpeaker 
INNER JOIN users AS o 
ON users.uID = srMeet.mOrg; 


$Speaker = $row['speaker']; 

$Organizer = $row['organizer']; 
관련 문제