Php 身份证` Table : og_ratings notification_date pacra_action pacra_outlook pacra_lterm pacra_sterm alter table og_ratings add index
身份证`Php 身份证` Table : og_ratings notification_date pacra_action pacra_outlook pacra_lterm pacra_sterm alter table og_ratings add index,php,mysql,join,max,Php,Mysql,Join,Max,身份证` Table : og_ratings notification_date pacra_action pacra_outlook pacra_lterm pacra_sterm alter table og_ratings add index idx_pacra_action(pacra_action), add index idx_pacra_outlook(pacra_outlook), add index idx_pacra_lterm(pacra_lterm), ad
Table : og_ratings
notification_date
pacra_action
pacra_outlook
pacra_lterm
pacra_sterm
alter table og_ratings
add index idx_pacra_action(pacra_action),
add index idx_pacra_outlook(pacra_outlook),
add index idx_pacra_lterm(pacra_lterm),
add index idx_pacra_sterm(pacra_sterm);
SELECT r.client_id,c.id,t.id,a.id,o.id,c.name AS opinion, r.notification_date, t.title AS ttitle,a.title AS atitle,o.title AS otitle, l.title AS ltitle, s.title AS stitle, r.opinion_id, pc.id, r.pr_client_id AS pr_client, pc.address, pc.liaison_one, city.id, pc.head_office_id, city.city, pc.title AS cname
FROM (SELECT a.client_id, a.notification_date, a.rating_type_id, a.pacra_action, a.pacra_outlook, a.pacra_lterm, a.pacra_sterm, a.opinion_id, a.pr_client_id
FROM (SELECT t.client_id, t.notification_date, t.rating_type_id, t.pacra_action, t.pacra_outlook, t.pacra_lterm, t.pacra_sterm, pr.opinion_id, pr.client_id AS pr_client_id,
CASE
WHEN @category != t.client_id THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@category := t.client_id AS var_category
FROM og_ratings t
JOIN pacra_client_opinion_relations pr ON pr.opinion_id = r.client_id
JOIN (SELECT @rownum := NULL, @category := '') r
WHERE pr.client_id = 50
ORDER BY t.client_id,t.notification_date DESC) a
WHERE x.rank=2) r
LEFT JOIN og_companies c ON r.client_id = c.id
LEFT JOIN og_rating_types t ON r.rating_type_id = t.id
LEFT JOIN og_actions a ON r.pacra_action = a.id
LEFT JOIN og_outlooks o ON r.pacra_outlook = o.id
LEFT JOIN og_lterms l ON r.pacra_lterm = l.id
LEFT JOIN og_sterms s ON r.pacra_sterm = s.id
LEFT JOIN pacra_clients pc ON pc.id = r.pr_client_id
LEFT JOIN city ON city.id = pc.head_office_id
LEFT JOIN og_companies c ON r.client_id = c.id
LEFT JOIN og_rating_types t ON r.rating_type_id = t.id
LEFT JOIN og_actions a ON r.pacra_action = a.id
LEFT JOIN og_outlooks o ON r.pacra_outlook = o.id
LEFT JOIN og_lterms l ON r.pacra_lterm = l.id
LEFT JOIN og_sterms s ON r.pacra_sterm = s.id
LEFT JOIN pacra_client_opinion_relations pr ON pr.opinion_id = c.id
LEFT JOIN pacra_clients pc ON pc.id = pr.client_id
LEFT JOIN city ON city.id = pc.head_office_id
WHERE
r.client_id IN ( SELECT opinion_id
FROM pacra_client_opinion_relations
WHERE client_id = 50 )
Opinion_ID Client_ID Other...
1 28 ...
2 35 ...
3 50 ...
4 2 ...
5 50 ...
6 6 ...
7 50 ...
8 4 ...
og_ratings (assuming this data is pre-sorted per client for sample purposes)
client_id notification_date
13 Sep 5 <- You want THIS entry if it was client 13 included
13 Sep 14 <- Most recent for client 13
28 Sep 1
28 Sep 8
28 Sep 10 <- You want THIS entry if client 28 included
28 Sep 11 <- Most recent for client 28
29 Sep 4 <- You want THIS entry if client 29 included
29 Sep 11 <- Most recent for client 29
43 Sep 16 <- Most recent for client 43 and no prior,
this would never show as only one entry for client
50 Sep 2
50 Sep 9
50 Sep 12 <- You want THIS entry for client 50
50 Sep 15 <- Most recent for client 50
client_id notification_date
13 Sep 5
28 Sep 10
29 Sep 4
50 Sep 12
og_ratings r INNER JOIN (
SELECT
client_id,
max(notification_date) notification_2nd_date
FROM
og_ratings
WHERE
(client_id, notification_date)
NOT IN ( SELECT client_id, max(notification_date)
FROM og_ratings
GROUP BY client_id )
GROUP BY
client_id
ORDER BY
client_id DESC
og_ratings r INNER JOIN (
SELECT
client_id,
max(notification_date) notification_2nd_date
FROM
og_ratings
WHERE
client_id = 50 <--- ADDED TO WHERE CLAUSE for CLIENT 50 ONLY
AND (client_id, notification_date)
NOT IN ( SELECT client_id, max(notification_date)
FROM og_ratings
WHERE client_id = 50 <--- ADDED HERE TOO FOR CLIENT 50
GROUP BY client_id )
GROUP BY
client_id
ORDER BY
client_id DESC
client_id notification_date
50 Sep 12