![](/img/trans.png)
[英]How to write non correlated query with inner join in sql for this question?
[英]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_fname
和client_lname
字段。 我該怎么做? :)
我的表的結構如下-> tbl_health_certificate ,[tbl_client] [2]
應該顯示的結果是帶有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.