Skip to content

Instantly share code, notes, and snippets.

@rubysolo
Forked from jimmybaker/gist:241975
Created November 24, 2009 16:25
Show Gist options
  • Save rubysolo/241992 to your computer and use it in GitHub Desktop.
Save rubysolo/241992 to your computer and use it in GitHub Desktop.
SELECT u.id, u.first_name, u.last_name, u.email, so.shipto_postal_code, so.placed_at
FROM users u LEFT JOIN sales_orders so
ON so.user_id = u.id
AND so.state != 'pending'
WHERE u.contact_me = 1
ORDER BY u.id, so.placed_at DESC
----------------------------------
SELECT u.id, u.first_name, u.last_name, u.email, so1.shipto_postal_code, so1.placed_at
FROM users u LEFT JOIN sales_orders so1
ON so1.user_id = u.id
AND so1.state != 'pending' LEFT JOIN sales_orders so2
ON so2.user_id = u.id
AND so2.state != 'pending'
AND so2.placed_at > so1.placed_at
WHERE u.contact_me = 1
AND so2.id IS NULL
ORDER BY u.id
----------------------------------
CREATE VIEW v_last_placed_order_per_user AS
SELECT user_id, MAX(placed_at) AS last_placed_at
FROM sales_orders
WHERE state != 'pending'
GROUP BY user_id
SELECT u.id, u.first_name, u.last_name, u.email, so.shipto_postal_code
FROM users u LEFT JOIN v_last_placed_order_per_user l
ON l.user_id = u.id LEFT JOIN sales_orders so
ON so.user_id = u.id AND so.placed_at = l.last_placed_at
ORDER BY u.id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment