[英]Having SQL Query not group results
我有一個通過user_id
聯接幾個表的sql查詢,問題是我想查看這些表中的所有數據。
目前,我正在查詢用戶表和付款表,並根據user_id
它們加入。
我似乎每個user_id只能得到一個結果,現在我知道這意味着要發生什么,但是如何(如果可能的話)可以顯示付款表中的所有數據(即我想查看多個用戶ID,顯示用戶已支付的各種款項)。
我目前正在使用左聯接,我想這可能是問題所在,但切換它仍未顯示我想要的結果。
這是我目前的加入:
from user u
left join u_subscription us
on u.user_id = us.user_id
left join u_detail ud
on u.user_id = ud.user_id
任何幫助將不勝感激。
提前致謝
納德
完整的SQL查詢:
select u.user_id as 'prop:User id', u.user_username as 'prop:username', u.user_email as 'Identity',u.user_created as 'Timestamp', us.user_subscription_expires as 'prop:Expires on', us.user_subscription_payment_provider as 'prop:Payment provider', us.user_subscription_modified, ud.user_detail_signup_country_iso3 as 'prop:Country'
from user u
left outer join user_subscription us
on u.user_id = us.user_subscription_user_id
left outer join user_detail ud
on u.user_id = ud.user_detail_user_id
我建議使用另一種方法:
select
'your selected columns'
from
user u,
u_subscription us,
u_detail ud
where
u.user_id = us.user_id and
u.user_id = ud.user_id
此方法的工作方式類似於join方法,但對我來說,此方法可使查詢更整潔且更易於理解。希望對您有所幫助!
由於您是專門查找明細/付款的信息,因此請使用THAT表作為查詢的基礎,然后再連接到users表,因為明細僅基於用戶存在...但是,您可以左聯接到訂閱(如果有條件的話)。 就像是
select
u.*,
ud.*,
us.*
from
u_detail ud
join user u
on ud.user_id = u.user_id
left join u_subscription us
on ud.user_id = us.user_id
由於從用戶詳細信息到用戶表的userID相同,因此只需將其用於加入訂閱表即可。 我通常不會在字段中使用“ *”,而是從中選擇所需的內容。
我發現您的查詢沒有缺陷。 它應該按預期工作。
我懷疑在subscription
表和detail
表中, 每位用戶最多只能有一行。 這就是為什么您的left join
聯接每位用戶僅產生一行(如果是內部聯接,則每位用戶最多可產生一行)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.