php - 日期为 'categories' 的 SQL JOIN

标签 php mysql sql join syntax

我正在尝试创建一个查询,将成员分为 child 和成人:

mysql 票证:

|ticket_id|ticket_no|
|    1    | 123456  |

mysql成员:

|member_id|ticket_no|  name  |    dob     |
|    1    | 123456  | edward | 2010-03-05 | //child
|    2    | 123456  | karen  | 1965-03-05 | //adult

html 输出:

|ticket_no|Adult Names|Children Names|
| 123456  |   karen   |    edward    |

我真的想用一个连接查询来完成它,并将它作为一行输出在一个循环中。 这只是一个例子:

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`

非常感谢任何帮助。

工作 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`

最佳答案

你可以试试这个。只需在您使用的变量中传递适当的日期范围

    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`

关于php - 日期为 'categories' 的 SQL JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32565758/

相关文章:

php - 如何将嵌套集模型数据格式化为数组?

mysql - 在MySQL中创建一对多关系

java - jsp 中的过滤字符串不适用于括号 []

mysql - 你能在 MySQL 上练习 MSSQL 查询吗?

php - Iphone检测php

php - 如何正确地从不同的文件调用函数?

php - 字符串组合匹配

mysql - 应用多个过滤器时如何提高查询性能?

mysql - 用于 Web 应用程序的大容量数据的后端技术

php - 比较并显示不匹配的数据