2011-10-23 17 views
0

我有兩個表。用戶表和照片表。 如果用戶上傳照片,他們可以選擇僅指定作爲「主要」個人資料照片(在前端執行)。根據可能存在或不存在的記錄的位值從鏈接表中檢索數據

tbl_users 
--------- 
user_id 
username 

tbl_photos 
--------- 
photo_id 
user_id 
is_primary (bit) 
file_name 
當我查詢的用戶搜索用戶的列表

,例如,我想他們所選擇的主照片顯示。但是,如果照片表中沒有鏈接的記錄,或者沒有鏈接的記錄被標記爲主,我仍然要返回用戶記錄,可能爲NULL或file_name的其他值。

我該如何做到這一點?

ps。我目前正在通過對數據庫的兩次獨立調用來完成此任務,但希望通過一次調用來提高效率。

回答

1

取決於你用什麼DB這個工程(userid2query是要獲取用戶的id):

SELECT u.user_id, u.username, p.photo_id, p.file_name 
from tbl_users u 
left outer join tbl_photos p on u.user_id = p.user_id and p.is_primary = 1 
where u.user_id = userid2query 

它返回的用戶信息和主照片信息 - 如果沒有主要照片或根本沒有照片它仍然返回用戶信息,但返回NULL的照片信息列。

+0

完美,非常感謝! – kona

+0

對不起,但我只是意識到,如果我不過濾用戶標識並獲取多個用戶,那麼沒有指定主要照片的每個用戶都會得到與所做的相同的值。換句話說,如果在照片列表中只有一條記錄標記爲主要記錄,則該結果集中的每個用戶都會顯示photo_id和file_name – kona

+0

沒關係,複製並粘貼後,事情就會變成垃圾。所有工作再次! – kona

0
select user_id , photo_id from tbl_users left join tbl_photos on tbl_users .user_id=tbl_users.user_id 
相關問題