두 가지 : 두 개의 테이블이 다른 분야가있는 경우
SELECT p.*
FROM posts AS p
INNER JOIN friends f ON p.userid = f.friendid
WHERE f.userid = '(Logged In User ID)'
UNION ALL
SELECT a.*
FROM activity AS a
INNER JOIN friends f ON a.userid = f.friendid
WHERE f.userid = '(Logged In User ID)'
는, 다음과 같이로, 2 개 선택 목록을 조정해야합니다 :
절대 명시 적 조인을 사용하지 않으면 명시 적 조인을 사용하지 마십시오. 쿼리의 성능이 저하 될 수 있습니다. 때로는 매우 심각한 경우도 있습니다.
검색어가 올바르게 구성되지 않았습니다. 당신은, 당신은 단지와 F에서 참조를 사용할 수 a와 F에 합류 절에서 전체 페이지를 사용할 수 없습니다 말 :
select p.*, a.*
from posts p, activity a inner join friends f on (a.userid = f.friendid)...
가장 가능성이 당신이 원하는 것을 같은 두 개의 쿼리입니다
:
select a.* from activity a, friends f, users u
where a.userid = f.friendid
and u.userid = f.userid;
and u.userid = 'logged in user'
와 두 테이블이 같은 열이있는 경우, 당신은 노동 조합 같은 것을 사용하여 단일 쿼리를 모두 넣을 수 있습니다
select p.* from posts p, friends f, users u
where p.userid = f.friendid
and u.userid = f.userid
and u.userid = 'logged in user'
:
(select a.* from activity a, friends f, users u
where a.userid = f.friendid
and u.userid = f.userid
and u.userid = 'logged in user'
) union (select p.* from posts p, friends f, users u
where p.userid = f.friendid
and u.userid = f.userid
and u.userid = 'logged in user')
같은 열이 없으면 두 선택 결과에 특정 열과 별칭이있는 동일한 열이 있거나 두 개의 쿼리로 돌아 가야합니다.
이 결과 집합에서 정렬해야하는 경우 하위 쿼리가 필요하지만 경고가 있으면 SQL 대신 응용 프로그램 논리에서 정렬 작업이 더 잘 수행되는 것으로 알려져 있습니다. 다른 데이터베이스 엔진은 이와 함께 더 나은 시간을가집니다.여기
괄호 안에 테이블에서 퍼팅보십시오 : 'FROM (AS AS, AS 활동) '. – Straseus
게시물과 p 사이의 AS를 제거하십시오. 활동과 a 사이에 동일하게 간다. 그리고 당신은 p.userid = f.friendid + 주위에 괄호가 필요하지 않습니다. cascadian 제품은 불가피합니다 그래서 활동과 다른 두 테이블 사이의 관계가 없습니다 – GuZzie