Reputation: 1883
I am trying to create a query that groups members into children and adults:
mysql tickets:
|ticket_id|ticket_no|
| 1 | 123456 |
mysql members:
|member_id|ticket_no| name | dob |
| 1 | 123456 | edward | 2010-03-05 | //child
| 2 | 123456 | karen | 1965-03-05 | //adult
html output:
|ticket_no|Adult Names|Children Names|
| 123456 | karen | edward |
I would like to do it with a join query really and output it in a loop as a row. This is just an example:
SELECT t.*, m.*
FROM (`tickets` t)
JOIN(`members` m)
ON(m.`ticket_no` = t.`ticket_no`)
(SELECT m.`name` FROM m WHERE m.`dob` BETWEEN {$cStart} AND {$cEnd}) as children
(SELECT m.`name` FROM m WHERE m.`dob` BETWEEN {$aStart} AND {$aEnd}) as adults
ORDER BY t.`ticket_no`
Any help greatly appreciated.
Working SQL:
SELECT t.*,
CASE
WHEN m.`dob`
BETWEEN '{$datetime['start']}'
AND '{$datetime['end']}'
THEN m.`name`
END AS ChildName
FROM `tickets` t
JOIN (`members` m)
ON (m.`ticket_no` = t.`ticket_no`)
ORDER BY t.`ticket_no`
Upvotes: 1
Views: 44
Reputation: 3620
you can try this. Just pass appropriate date range in variables you are using
SELECT t.ticket_no,
case when m.`dob` BETWEEN {$aStart} AND {$aEnd} then m.name end as AdultName,
case when m.`dob` BETWEEN {$cStart} AND {$cEnd} then m.name end as ChildName
FROM (`tickets` t)
JOIN(`members` m)
ON(m.`ticket_no` = t.`ticket_no`)
ORDER BY t.`ticket_no`
Upvotes: 1