Php 从一个表中选择记录,并使用另一个表中的列对结果进行排序
我正在为位于我工作地点的CRM开发工资系统,我正在努力节省存储冗余数据的时间,这些数据会在几年内累积起来 我试图把它与“”联系起来,但没有成功 我有一个Php 从一个表中选择记录,并使用另一个表中的列对结果进行排序,php,mysql,Php,Mysql,我正在为位于我工作地点的CRM开发工资系统,我正在努力节省存储冗余数据的时间,这些数据会在几年内累积起来 我试图把它与“”联系起来,但没有成功 我有一个Users表 =========================================== # id | username | first_name | last_name # =========================================== # 1 | joe | Joe | B
Users
表
===========================================
# id | username | first_name | last_name #
===========================================
# 1 | joe | Joe | Blow #
===========================================
我还有一个时间表
表,其中存储了每个单独会话的数据,为了简短起见,我在这个问题中压缩了一点,显然遗漏了开始和结束的完整日期/时间
============================================
# id | username | start | finish #
============================================
# 1 | joe | 00:00 | 23:59 #
============================================
我想要实现的是,通过用户
表中的姓氏
列对时间表
表中的结果进行排序,仅使用从时间表
表中派生的用户名
我在这里尝试的是:
SELECT * FROM `Timesheets` WHERE `start` >= '{$monday}' AND `finish` <= '{$sunday}' ORDER BY (`Users`.`last_name` WHERE `username` = `Timesheets`.`username`) ASC
从'Timesheets'中选择*,其中'start`>='{$monday}'和'finish`您必须使用加入
,然后按
排序,如下所示:
SELECT ts.*
FROM timesheets ts
JOIN users
ON ts.username = users.username
ORDER BY users.last_name
您可以根据需要将WHERE
子句添加到ORDER BY
UseJOIN
之前:
SELECT *
FROM Timesheets T
JOIN Users U ON T.username = U.username
WHERE T.start >= '{$monday}' AND `finish` <= '{$sunday}'
ORDER BY U.last_name ASC
选择*
从时间表
在T.username=U.username上加入用户U
其中T.start>='{$monday}'和'finish`使用join:
SELECT t.*
FROM timesheets t
JOIN users
ON t.username = users.username WHERE t.start >= '{$monday}' AND t.finish <= '{$sunday}'
ORDER BY users.last_name
选择t*
从时间表
加入用户
在t.username=users.username上,其中t.start>='{$monday}'和t.finish感谢您的回答,+1