標籤:怎麼 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多表查詢資料出現串列