내가 CentOS는 5.5 PostgreSQL의 8.4.6을 사용하고 가입하고 사용자의 테이블이 왼쪽 :PostgreSQL의 : 외부 구문
# select * from pref_users where id='DE2';
id | first_name | last_name | female | avatar | city | lat | lng | login | last_ip | medals | logout
-----+------------+-----------+--------+------------------+---------------------+-----+-----+----------------------------+---------+--------+----------------------------
DE2 | Alex | | f | 2_1280837766.jpg | г. Бохум в Германии | | | 2011-01-02 19:26:37.790909 | | | 2011-01-02 19:29:30.197062
(1 row)
및 게임 매주 원들은 "가상의 돈을"목록 다른 테이블을 :
# select * from pref_money where id='DE2';
id | money | yw
-----+-------+---------
DE2 | 66 | 2010-48
(1 row)
은 그럼 사용자에 대한 이러한 정보를 정기적으로 모두를 표시하기 위해 노력하고있어,하지만 난 현재 주에 대한 사용자의 돈에만 관심이 있어요 :
# select u.id,
u.first_name,
u.city,
u.avatar,
m.money,
u.login > u.logout as online
from pref_users u, pref_money m where
m.yw=to_char(current_timestamp, 'YYYY-IW') and
u.id=m.id and
u.id='DE2'
order by m.money desc;
id | first_name | city | avatar | money | online
----+------------+------+--------+-------+--------
(0 rows)
이 경우 사용자 'DE2'가 이번 주에 '가상 화폐'를 아직받지 못했기 때문에 행이 없습니다.
나는 그들이이 주를 연주하지 않은 경우 항상 기존 사용자에 대한 데이터를 반환 있고 그래서 내 쿼리를 변경하려면 - 그래서 내가 필요 추측 다음 쿼리는 0
를 반환해야
select u.id,
u.first_name,
u.city,
u.avatar,
m.money,
u.login > u.logout as online
from pref_users u left outer join pref_money m on (
m.yw=to_char(current_timestamp, 'YYYY-IW') and
u.id=m.id and
u.id='DE2')
order by m.money desc;
을하지만, 이러한 반환 나를 대신 한 아이디 = 'DE2'와 다른 사용자와 행의 많은 : outer left join 내가 노력하고있어.
내가 뭘 잘못하고 있니?
편집이 : 다시 온 절에 m.yw 추가 – Daniel