簡體   English   中英

相關查詢的內部聯接結果

[英]Inner join result of correlated query

我有這樣的查詢

SELECT hc_num,client_pow,client_id,date_issued,client_occup 
FROM tbl_health_certificate t1 
WHERE date_issued = 
    (SELECT MAX(date_issued) 
     FROM tbl_health_certificate t2 
     WHERE t2.client_id=t1.client_id) AND year(date_issued) < year(now())

現在,我希望將結果連接到另一個表,以獲取一些行值,尤其是client_fnameclient_lname字段。 我該怎么做? :)

我的表的結構如下-> tbl_health_certificate ,[tbl_client] [2]

tbl_health_certificate的內容

應該顯示的結果是帶有client_id的行:-26 -29

表tbl_client中的client_fname和client_lname

好吧,經過一夜的睡眠,我明白了為什么昨天的回答沒有用。 我以為子查詢是不必要的,但我錯了,因為聚合列中的值不一定與MAX(tbl_health_certificate.date_issued)來自同一行。 另外,我昏昏欲睡的想法並沒有意識到WHERE在分組發生之前會縮小結果的范圍,因此這確實會導致來自最近行是今年的客戶的行出現。 就像我在下面所做的那樣,應將“今年不開始”條件放在HAVING子句中。

此查詢比OP自己的解決方案具有更少的嵌套級別,因此我認為這是一個很好的選擇。

SELECT t1.hc_num, t1.client_pow, t1.client_id,
    t1.date_issued, t1.client_occup, t4.client_fname, t4.client_lname
FROM tbl_health_certificate t1
JOIN
    (SELECT t2.client_id, MAX(t2.date_issued) AS max_date
    FROM tbl_health_certificate t2
    GROUP BY t2.client_id
    HAVING year(MAX(t2.date_issued)) < year(now())) t3
ON t1.client_id = t3.client_id AND t1.date_issued = t3.max_date
JOIN tbl_client t4 ON t1.client_id = t4.client_id

修改了幾行。

select table1.* , table2.* from
(SELECT hc_num,client_pow,client_id,date_issued,client_occup 
FROM tbl_health_certificate t1,
(SELECT MAX(date_issued) date_issued_max
     FROM tbl_health_certificate t2 group by client_id) t2
WHERE t1.date_issued = t2.date_issued_max
AND year(date_issued) < year(now())) table1
left/right/full outer join -- use appropriate join
tbl_client table2 ON table1.client_id = table2.client_id

我相信查詢將是這樣的:

SELECT 
t2.client_fname, t2.client_lname, t1.hc_num, t1.client_pow,
t1.client_id, MAX(t1.date_issued) as 'date_issued', t1.client_occup 
FROM tbl_health_certificate t1 INNER JOIN 
tbl_client t2 ON t2.client_id = t1.client_id
WHERE year(t1.date_issued) < year(now())
GROUP BY t1.client_id

帶有GROUP BY的MAX會有所幫助,然后t1的任何行結果都會立即加入tbl_client以檢索客戶端信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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