Is this what you're after?

SELECT 
  COUNT(*) AS members, 
  SUM(IF(payment_type = 'creditcard', 1, 0)) AS pay_by_card 
FROM 
  members 
  JOIN payments USING (memno) 
GROUP BY group;

On 8/5/05, Russell Horn <[EMAIL PROTECTED]> wrote:
> I'm having difficulty writing a query as follows. I'm unsure if I need a
> subquery, a union or if this isn't actually possible without using
> temporary tables.
> 
> I have two tables for members.
> 
> Table 1 (members)          Table 2 (payments)
> +----------+------------+  +---------+--------------+
> | memno    | group      |  | memno   | payment_type |
> +----------+------------+  +---------+--------------+
> |    1     | a          |  | 1       | cash         |
> |    2     | b          |  | 2       | cash         |
> |    3     | a          |  | 3       | creditcard   |
> |    4     | a          |  | 4       | check        |
> |    5     | c          |  | 5       | creditcard   |
> ...                         ...
> 
> 
> I'd like a query that returns the total number in each group, together
> with the number paying by credit card.
> 
> Obviously I can build two queries, and use a temporary table, but is
> there a way to get a table like that below in a single query?
> 
> +----------+------------+------------------+
> | group    |  members   | pay_by_card      |
> +----------+------------+------------------+
> |    a     |   5        |  3               |
> |    b     |   26       |  18              |
> ...
> 
> This will be using MySQL 5 if that helps
> 
> Thanks!
> 
> Russell
> 
> 
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> 
>

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to