MySQL多表查詢資料出現串列

來源:互聯網
上載者:User

標籤:怎麼   user   jpg   span   ima   顯示   desc   use   聯表查詢   

 

如所示,要查詢一個使用者(從註冊開始) 7天, 15天, 30天的發帖數量, 查詢出來的資料結果串列了。因為,有註冊的使用者,他前7天沒有發帖,即發帖數為0,在資料表中應該顯示為NULL的,所以資料表中15天多出來的資料,是使用者7天發帖數為0的。   30天的也同樣道理。

怎麼解決呢? 首先以 最大限期時30天的為主參照表, 30天包含15天,7天,如果以他為參考主表,篩選出來的使用者ID肯定會也有15天,7天的,如果沒發帖的話,查詢顯示就是NULL。

語句這樣寫, .

 

select * from (連表查詢產生的虛擬表30天的) left join (聯表查詢產生的虛擬表7天的) on 這兩張虛擬表的串連條件

select * from (連表查詢產生的虛擬表30天的) left join (聯表查詢產生的虛擬表15天的) on 這兩張虛擬表串連條件

SELECT
A.id, A.user_id, A.`註冊時間`, A.`發帖數量`, B.`發帖數量`
FROM
(
SELECT
qp.id,
qp.user_id,
qs.wechat,
from_unixtime(qp.create_at, ‘%Y-%m-%d‘) 註冊時間,
COUNT(qp.user_id) 發帖數量,
count(qs.id) 二手數量,
qs.create_at ,
uw.create_at AS uwcreate
FROM
welife_quan.quan_post AS qp
LEFT JOIN quan_post_second AS qs ON qs.pid = qp.id
LEFT JOIN welife_system.user_wechat AS uw ON uw.unionid = qp.user_id
GROUP BY
qp.user_id
HAVING
qs.wechat != ‘‘
AND qs.create_at <= uwcreate + 60 * 60 * 24 * 30
ORDER BY
qp.id DESC
) AS A
LEFT JOIN(
SELECT
qp.id,
qp.user_id,
qs.wechat,
from_unixtime(qp.create_at,‘%Y-%m-%d‘) 註冊時間,
COUNT(qp.user_id) 發帖數量,
count(qs.id) 二手數量,
qs.create_at,
uw.create_at AS uwcreate
FROM
welife_quan.quan_post AS qp
LEFT JOIN quan_post_second AS qs ON qs.pid = qp.id
LEFT JOIN welife_system.user_wechat AS uw ON uw.unionid = qp.user_id
GROUP BY
qp.user_id
HAVING
qs.wechat != ‘‘
AND qs.create_at <= uwcreate + 60 * 60 * 24 * 7
ORDER BY
qp.id DESC
) AS B ON A.user_id = B.user_id;

MySQL多表查詢資料出現串列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.