mysql 多表查询JOIN [重复]

ozxc1zmp  于 2022-12-26  发布在  Mysql
关注(0)|答案(1)|浏览(166)
    • 此问题在此处已有答案**:

How to join two tables with unequal number of rows for same primary key value(2个答案)
昨天关门了。
我有带名字的table

  • 考勤_时间表 *

| 识别号|日期|
| - ------| - ------|
| 1个|二〇二二年十二月二十日|
| 第二章|二〇二二年十二月二十一日|
| 三个|二〇二二年十二月二十二日|

  • 用户 *

| 识别号|姓名|
| - ------| - ------|
| 1个|无名氏|
| 第二章|无名氏|
| 三个|乔纳森·多伊|
| 四个|詹妮弗·多伊|
然后在表中建立两者之间的关系,目的是列出计划考勤和实际考勤。

  • 出勤_计划 *

| 考勤计划标识|用户标识|
| - ------| - ------|
| 1个|1个|
| 1个|第二章|
| 1个|三个|
| 第二章|1个|
| 第二章|三个|
| 第二章|四个|
| 三个|1个|
| 三个|第二章|

  • 出勤_实际 *

| 考勤计划标识|用户标识|
| - ------| - ------|
| 1个|1个|
| 1个|第二章|
| 1个|三个|
| 1个|四个|
| 第二章|1个|
| 第二章|第二章|
| 第二章|三个|
| 三个|第二章|
现在,我想在MySQL上使用 * JOIN * 显示 * attendence_schedules attendence_planned attendence_actual * 和 * users * 之间的组合数据。但我被卡住了,找不到引用来实现我想要的功能。

  • 这是我第一次问,如果有什么需要修复的标题或问题,我会很乐意修复它:)

我使用以下SQL查询:

SELECT attendance_schedules.date, planning_users.name, actual_users.name
FROM attendance_schedules
LEFT JOIN attendance_planned ON attendance_planned.attendance_schedule_id = attendance_schedules.id
LEFT JOIN users as planning_users ON planning_users.id = attendance_planned.user_id
LEFT JOIN attendance_actual ON attendance_actual.attendance_schedule_id = attendance_schedules.id
LEFT JOIN users as actual_users ON actual_users.id = attendance_actual.user_id

我想要的结果:
| 日期|计划名称|实际名称|
| - ------| - ------| - ------|
| 二〇二二年十二月二十日|无名氏|无名氏|
| 二〇二二年十二月二十日|无名氏|无名氏|
| 二〇二二年十二月二十日|乔纳森·多伊|乔纳森·多伊|
| 二〇二二年十二月二十日|零|詹妮弗·多伊|
| 二〇二二年十二月二十一日|无名氏|无名氏|
| 二〇二二年十二月二十一日|乔纳森·多伊|无名氏|
| 二〇二二年十二月二十一日|詹妮弗·多伊|乔纳森·多伊|
| 二〇二二年十二月二十二日|无名氏|无名氏|
| 二〇二二年十二月二十二日|无名氏|零|
现在发生的结果:
| 日期|计划名称|实际名称|
| - ------| - ------| - ------|
| 二〇二二年十二月二十日|无名氏|无名氏|
| 二〇二二年十二月二十日|无名氏|无名氏|
| 二〇二二年十二月二十日|无名氏|乔纳森·多伊|
| 二〇二二年十二月二十日|无名氏|无名氏|
| 二〇二二年十二月二十日|无名氏|无名氏|
| 二〇二二年十二月二十日|无名氏|乔纳森·多伊|
| 二〇二二年十二月二十日|乔纳森·多伊|无名氏|
| 二〇二二年十二月二十日|乔纳森·多伊|无名氏|
| 二〇二二年十二月二十日|乔纳森·多伊|乔纳森·多伊|
| - -| - -| - -|

相关问题