Php 从一个表中选择记录,并使用另一个表中的列对结果进行排序

Php 从一个表中选择记录,并使用另一个表中的列对结果进行排序,php,mysql,Php,Mysql,我正在为位于我工作地点的CRM开发工资系统,我正在努力节省存储冗余数据的时间,这些数据会在几年内累积起来 我试图把它与“”联系起来,但没有成功 我有一个Users表 =========================================== # id | username | first_name | last_name # =========================================== # 1 | joe | Joe | B

我正在为位于我工作地点的CRM开发工资系统,我正在努力节省存储冗余数据的时间,这些数据会在几年内累积起来

我试图把它与“”联系起来,但没有成功

我有一个
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
Use
JOIN
之前:

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