How to select last entry when joining?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • minijus
    New Member
    • Jul 2010
    • 3

    How to select last entry when joining?

    Hello,
    I have a query like this:
    Code:
    SELECT jos_vm_orders.user_id, jos_vm_orders.cdate, sum( order_total ) AS total, count( jos_vm_orders.order_id ) AS ordercount, jos_vm_user_info.first_name, jos_vm_user_info.last_name, jos_vm_user_info.phone_1, jos_vm_user_info.user_email, jos_vm_user_info.city
    FROM jos_vm_orders
    LEFT JOIN jos_vm_user_info ON jos_vm_orders.user_id = jos_vm_user_info.user_id
    WHERE jos_vm_orders.order_status = 'C'
    GROUP BY jos_vm_orders.user_id
    LIMIT 0 , 30
    When there is more than one order for same user_id the script selects the first order cdate, but I would like to select the last one. Any ideas?
  • code green
    Recognized Expert Top Contributor
    • Mar 2007
    • 1726

    #2
    This actually an illegal query except MySQL uses an algorithm to 'guess' the fields you require where you haven't used an aggregate or a GROUP BY.

    So jos_vm_orders.c date, jos_vm_user_inf o.first_name, jos_vm_user_inf o.last_name, jos_vm_user_inf o.phone_1, jos_vm_user_inf o.user_email, jos_vm_user_inf o.city are all chosen for you.

    To specify the last date you could try
    MAX() or use HAVING.

    Comment

    • minijus
      New Member
      • Jul 2010
      • 3

      #3
      Well all other information for one user_id ir the same, but the cdate differs. Thank you very much for MAX(), this solved my probled because date is stored in timestamp format.

      Comment

      Working...