0

我有一个接近我想要的查询,但不完全是:

SELECT DISTINCT p.id, 
                Ifnull(p.last_name, '--')         last_name, 
                Ifnull(p.first_name, '--')        first_name, 
                Ifnull(p.city, '--')              city, 
                Ifnull(p.state, '--')             state, 
                Ifnull(e.full_name, '--')         full_name, 
                Ifnull(o.current_step, '--')      current_step, 
                Ifnull(o.current_step_date, '--') current_step_date
FROM   prospect AS p 
       JOIN opportunity AS o 
         ON o.prospect_id = p.id 
       JOIN employee AS e 
         ON p.id_ofproducer = e.id 
WHERE  p.id = 1234 

我希望从 P 中获得该行

注意:如果有多个 o 或 e 记录使用 MAX ID,如果没有使用“--”

4

2 回答 2

1

您需要left join处理没有记录的情况。而且,您需要找到oe记录的最大值。实际上,您不应该对e记录有任何问题,因为您是在 id 上加入的。这是制定查询的一种方法:

SELECT DISTINCT p.id, 
                Ifnull(p.last_name, '--')         last_name, 
                Ifnull(p.first_name, '--')        first_name, 
                Ifnull(p.city, '--')              city, 
                Ifnull(p.state, '--')             state, 
                Ifnull(e.full_name, '--')         full_name, 
                Ifnull(o.current_step, '--')      current_step, 
                Ifnull(o.current_step_date, '--') current_step_date
FROM   prospect AS p 
       left JOIN opportunity AS o 
         ON o.prospect_id = p.id and
            o.id = (select id from opportunity o2 where o2.prospect_id = p.id order by id desc limit 1)
       left JOIN employee AS e 
         ON p.id_ofproducer = e.id
WHERE  p.id = 1234 
于 2013-06-12T20:35:35.063 回答
0
SELECT p.id, 
       Ifnull(p.last_name, '--')         last_name, 
       Ifnull(p.first_name, '--')        first_name, 
       Ifnull(p.city, '--')              city, 
       Ifnull(p.state, '--')             state, 
       Ifnull(e.full_name, '--')         full_name, 
       Ifnull(o.current_step, '--')      current_step, 
       Ifnull(o.current_step_date, '--') current_step_date
FROM   prospect AS p 
       JOIN opportunity AS o 
         ON o.prospect_id = p.id 
       JOIN employee AS e 
         ON p.id_ofproducer = e.id 
WHERE  p.id = 1234
ORDER BY o.prospect_id DESC, e.id DESC
LIMIT 1
于 2013-06-12T20:22:39.013 回答