簡體   English   中英

使SQL查詢不分組結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM