給定用戶名在Drupal 7.17數據庫中使用PostgreSQL 8.4.13我試圖獲取用戶信息(uid,城市,性別,頭像)分佈在幾張桌子上。加入幾個表(獲取用戶信息爲1行),但其中一個是可選的(用戶頭像)
然而,頭像(下面的f.filename
)是可選的 - 有些用戶沒有它。
對於用戶來說,這的確有替身我的查詢工作良好:
# select
u.uid,
/* u.pass, */
f.filename,
g.field_gender_value,
c.field_city_value
from
drupal_users u,
drupal_file_managed f,
drupal_field_data_field_gender g,
drupal_field_data_field_city c
where
u.name='Alex' and
u.picture=f.fid and
g.entity_id=u.uid and
c.entity_id=u.uid
;
uid | filename | field_gender_value | field_city_value
-----+--------------------------+--------------------+------------------
1 | picture-1-1312223092.jpg | Male | Bochum
(1 row)
但是對於用戶來說,沒有分身誰我得到空的結果。
當我省略了drupal_file_managed f
表 - 它再次工作:
# select
u.uid,
/* u.pass, */
g.field_gender_value,
c.field_city_value
from
drupal_users u,
drupal_field_data_field_gender g,
drupal_field_data_field_city c
where
u.name='mvp' and
g.entity_id=u.uid and
c.entity_id=u.uid
;
uid | field_gender_value | field_city_value
-------+--------------------+------------------
18539 | Male | Moscow
(1 row)
我怎麼能修改我加入語句確保它始終返回1行爲有效用戶 - 無論他們是否有頭像或不?對於後面的情況,f.filename
列可以爲空。
我需要left outer join嗎? (我怕它會返回幾行而不是1)。
用戶可以擁有1個分身嗎? –