【问题标题】:Using a JOIN Statement in SQL is giving improper information在 SQL 中使用 JOIN 语句会提供不正确的信息
【发布时间】:2015-11-02 15:55:51
【问题描述】:

这是我在这里的第一个问题,所以我会尽力说清楚。

我正在尝试在 Microsoft SQL 中运行 SQL 语句(如果重要的话,我会将其转换为 php)并且我正在使用 join 语句。我将粘贴确切的代码并尝试提供一个正在发生的事情以及我需要发生的事情的示例。

SELECT
  WORK_ORDER.BASE_ID,
  OPERATION.WORKORDER_SUB_ID,
  WORK_ORDER.PART_ID,
  OPERATION.SETUP_HRS,
  OPERATION.RUN,
  OPERATION.RUN_TYPE,
  OPERATION.RUN_HRS,
  WORK_ORDER.DESIRED_QTY,
  WORK_ORDER.DESIRED_WANT_DATE,
  WORK_ORDER.COMMODITY_CODE
FROM
  WORK_ORDER
  JOIN OPERATION ON WORK_ORDER.BASE_ID = OPERATION.WORKORDER_BASE_ID
WHERE
  OPERATION.RESOURCE_ID = '280LASERS'
  AND OPERATION.STATUS='R'
ORDER BY
  DESIRED_WANT_DATE,
  OPERATION.WORKORDER_SUB_ID;

我得到的信息(简而言之)是:

+---------+-------------+-------------+-------------------------+----------------+------------------+-----------+--------------+----------+---------+
| BASE_ID |   PART_ID   | DESIRED_QTY |    DESIRED_WANT_DATE    | COMMODITY_CODE | WORKORDER_SUB_ID | SETUP_HRS |     RUN      | RUN_TYPE | RUN_HRS |
+---------+-------------+-------------+-------------------------+----------------+------------------+-----------+--------------+----------+---------+
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               13 | 0.100     | 180.00000000 | PCS/HR   | 0.33    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               16 | 0.150     | 180.00000000 | PCS/HR   | 0.66    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               17 | 0.330     | 140.00000000 | PCS/HR   | 0.42    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               19 | 0.150     | 240.00000000 | PCS/HR   | 0.49    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               22 | 0.330     | 140.00000000 | PCS/HR   | 0.42    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               23 | 0.330     | 140.00000000 | PCS/HR   | 0.42    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               25 | 0.100     | 400.00000000 | PCS/HR   | 0.15    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               30 | 0.330     | 30.00000000  | PCS/HR   | 3.93    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               33 | 0.100     | 45.00000000  | PCS/HR   | 1.31    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |                5 | 0.100     | 48.00000000  | PCS/HR   | 1.23    |
| W146589 | 11000001722 | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |                8 | 0.100     | 40.00000000  | PCS/HR   | 1.48    |
+---------+-------------+-------------+-------------------------+----------------+------------------+-----------+--------------+----------+---------+

以下是应该返回的内容:

 +---------+-------------+-------------+-------------------------+----------------+------------------+-----------+--------------+----------+---------+
 | BASE_ID |   PART_ID   | DESIRED_QTY |    DESIRED_WANT_DATE    | COMMODITY_CODE | WORKORDER_SUB_ID | SETUP_HRS |     RUN      | RUN_TYPE | RUN_HRS |
 +---------+-------------+-------------+-------------------------+----------------+------------------+-----------+--------------+----------+---------+
 | W146589 | F3702202    | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               13 | 0.100     | 180.00000000 | PCS/HR   | 0.33    |
*| W146589 | F3723301    | 118.0000    | 2015-05-13 00:00:00.000 | FLASH TECH     |               16 | 0.150     | 180.00000000 | PCS/HR   | 0.66    |
 | W146589 | F3723502    | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               17 | 0.330     | 140.00000000 | PCS/HR   | 0.42    |
*| W146589 | F3771901    | 118.0000    | 2015-05-13 00:00:00.000 | FLASH TECH     |               19 | 0.150     | 240.00000000 | PCS/HR   | 0.49    |
 | W146589 | F3864701    | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               22 | 0.330     | 140.00000000 | PCS/HR   | 0.42    |
 | W146589 | F3864702    | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               23 | 0.330     | 140.00000000 | PCS/HR   | 0.42    |
 | W146589 | F3703100    | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               25 | 0.100     | 400.00000000 | PCS/HR   | 0.15    |
*| W146589 | F3864501    | 118.0000    | 2015-05-13 00:00:00.000 | FLASH TECH     |               30 | 0.330     | 30.00000000  | PCS/HR   | 3.93    |
 | W146589 | 3704901-4   | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |               33 | 0.100     | 45.00000000  | PCS/HR   | 1.31    |
 | W146589 | 3704901-3   | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |                5 | 0.100     | 48.00000000  | PCS/HR   | 1.23    |
 | W146589 | 3704901-5   | 59.0000     | 2015-05-13 00:00:00.000 | FLASH TECH     |                8 | 0.100     | 40.00000000  | PCS/HR   | 1.48    |
 +---------+-------------+-------------+-------------------------+----------------+------------------+-----------+--------------+----------+---------+

如您所见,第一个查询重复了PART_IDDESIRED_QTY,而SUB_ID 却发生了变化,这很奇怪,让我把头发都拉出来了。

我可以告诉你,重复的 PART_IDDESIRED_QTY 来自 0 SUB_ID,这是唯一一个带有 DESIRED_WANT_DATE 的,但我需要确保它只从有计划的 Work_Orders 中提取想要约会。

我尝试删除 DESIRED_WANT_DATE IS NOT NULL 语句,但它并没有改变输出,只是给出了 MORE Work_Orders。

我认为使用 JOIN 语句可能会出现问题,但我不确定如何提取所有必需的信息。我想如果我能够 (JOIN ON WORK_ORDER.BASE_ID = OPERATION.WORKORDER_BASE_ID AND WORK_ORDER.SUB_ID = OPERATION.WORKORDER_SUB_ID) 可以帮助它提取正确的信息,但我不知道如何以这种方式操作 SQL 中的数据输出。

编辑:

请求的表格示例:

WORK_ORDER:

| ROWID | TYPE |  BASE_ID   | LOT_ID | SPLIT_ID | SUB_ID |  PART_ID   | GLOBAL_RANK | DESIRED_QTY | RECEIVED_QTY |       CREATE_DATE       |    DESIRED_RLS_DATE     |    DESIRED_WANT_DATE    | CLOSE_DATE | COSTED_DATE | STATUS | COPY_FROM_SPLIT_ID | ENGINEERED_BY |     ENGINEERED_DATE     | DRAWING_ID | DRAWING_REV_NO | PRODUCT_CODE | COMMODITY_CODE | FORWARD_SCHEDULE | POSTING_CANDIDATE | MAT_GL_ACCT_ID | LAB_GL_ACCT_ID | BUR_GL_ACCT_ID | SER_GL_ACCT_ID | VARIABLE_TABLE | SCHEDULE_GROUP_ID | SCHED_START_DATE | SCHED_FINISH_DATE | COULD_FINISH_DATE | EST_MATERIAL_COST | EST_LABOR_COST | EST_BURDEN_COST | EST_SERVICE_COST | ACT_MATERIAL_COST | ACT_LABOR_COST | ACT_BURDEN_COST | ACT_SERVICE_COST | REM_MATERIAL_COST | REM_LABOR_COST | REM_BURDEN_COST | REM_SERVICE_COST | MARKED_FOR_PURGE | PRINTED_DATE | DRAWING_FILE | WAREHOUSE_ID | WIP_VAS_REQUIRED | ALLOCATED_QTY | FULFILLED_QTY | DEF_LBL_FORMAT_ID | HARD_RELEASE_DATE | USER_1 | USER_2 |      USER_3      | USER_4 | USER_5 | USER_6 | USER_7 | USER_8 | USER_9 | USER_10 | UDF_LAYOUT_ID | DBR_TYPE | DBR_PRIORITY | DBR_CODE | WBS_CODE | WBS_PROJECT | WBS_CUST_ORDER_ID | MILESTONE_SEQ_NO | MILESTONE_SUB_ID | ECN_REVISION | EDI_BLANKET_FLAG | DISPATCHED | ORIG_STAGE_REVISION_ID |     STATUS_EFF_DATE     | ALLOW_ALT_PARTS | ALLOW_UPD_FROM_MST | ALLOW_UPD_FROM_LEG | UPDATE_FROM_REF | UPDATE_USER_ID | UPDATE_ENG_MASTER | UPDATE_DATE | SITE_ID | PROD_ORDER_TYPE | PLANNER_ID | INACTIVE |

|  7888 | M    | 0006-12096 |      0 |        0 |      0 | 0006-12096 |          50 | 1000.0000   | 0.0000       | 2010-05-19 13:54:51.137 | 2010-05-19 00:00:00.000 | 2010-05-19 00:00:00.000 | NULL       | NULL        | U      | NULL               | NULL          | 2010-05-19 00:00:00.000 | B43521-02  |             03 | CONTRACT     | CHROMOLOX      | N                | Y                 | NULL           | NULL           | NULL           | NULL           | NULL           | NULL              | NULL             | NULL              | NULL              | 34.66             | 26.74          | 188.64          | 290.00           | 0.00              | 0.00           | 0.00            | 0.00             | 34.66             | 26.74          | 188.64          | 290.00           | N                | NULL         | NULL         | NULL         | NULL             | 0.0000        | 0.0000        | NULL              | N                 | NULL   | NULL   | COSMETIC LEVEL 3 | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | O        | NULL         | NULL     | NULL     | N           | NULL              | NULL             | NULL             | NULL         | N                | NULL       | NULL                   | 2013-07-29 00:00:00.000 | NULL            | Y                  | Y                  | NULL            | NULL           | NULL              | NULL        | GAR     | NULL            | NULL       | N        |

操作:

| ROWID | WORKORDER_TYPE | WORKORDER_BASE_ID | WORKORDER_LOT_ID | WORKORDER_SPLIT_ID | WORKORDER_SUB_ID | SEQUENCE_NO |   RESOURCE_ID   | SETUP_HRS |     RUN      | RUN_TYPE | LOAD_SIZE_QTY | RUN_HRS | MOVE_HRS | TRANSIT_DAYS | SERVICE_ID | SCRAP_YIELD_PCT | SCRAP_YIELD_TYPE | FIXED_SCRAP_UNITS | MINIMUM_MOVE_QTY | CALC_START_QTY | CALC_END_QTY | COMPLETED_QTY | DEVIATED_QTY | ACT_SETUP_HRS | ACT_RUN_HRS | STATUS | SETUP_COMPLETED | SERVICE_BEGIN_DATE | CLOSE_DATE | OPERATION_TYPE | DRAWING_ID | DRAWING_REV_NO | OVERRIDE_QTYS | BEGIN_TRACEABILITY | CAPACITY_USAGE_MAX | CAPACITY_USAGE_MIN | TEST_ID | SPC_QTY | SCHED_START_DATE | SCHED_FINISH_DATE | COULD_FINISH_DATE | ISDETERMINANT | SETUP_COST_PER_HR | RUN_COST_PER_HR | RUN_COST_PER_UNIT | BUR_PER_HR_SETUP | BUR_PER_HR_RUN | BUR_PER_UNIT_RUN | SERVICE_BASE_CHG | BUR_PERCENT_SETUP | BUR_PERCENT_RUN | BUR_PER_OPERATION | EST_ATL_LAB_COST | EST_ATL_BUR_COST | EST_ATL_SER_COST | REM_ATL_LAB_COST | REM_ATL_BUR_COST | REM_ATL_SER_COST | ACT_ATL_LAB_COST | ACT_ATL_BUR_COST | ACT_ATL_SER_COST | EST_TTL_MAT_COST | EST_TTL_LAB_COST | EST_TTL_BUR_COST | EST_TTL_SER_COST | REM_TTL_MAT_COST | REM_TTL_LAB_COST | REM_TTL_BUR_COST | REM_TTL_SER_COST | ACT_TTL_MAT_COST | ACT_TTL_LAB_COST | ACT_TTL_BUR_COST | ACT_TTL_SER_COST | SPLIT_ADJUSTMENT | MILESTONE_ID | SCHEDULE_TYPE | MIN_SEGMENT_SIZE | PROTECT_COST | DRAWING_FILE | DISPATCHED_QTY | SERVICE_MIN_CHG | VENDOR_ID | VENDOR_SERVICE_ID | SERVICE_PART_ID | LAST_DISP_DATE | LAST_RECV_DATE | WAREHOUSE_ID | ALLOCATED_QTY | FULFILLED_QTY | LEAST_MIN_MOVE_QTY | MAX_GAP_PREV_OP | APPLY_CALENDAR | MAX_DOWNTIME | ACCUM_DOWNTIME | RUN_QTY_PER_CYCLE | USER_1 | USER_2 | USER_3 | USER_4 | USER_5 | USER_6 | USER_7 | USER_8 | USER_9 | USER_10 | UDF_LAYOUT_ID | NUM_MEM_TO_SCHED | SERVICE_BUFFER | MILESTONE_SUB_ID | POST_MILESTONE | PROJ_MILESTONE_OP | WBS_CODE | WBS_START_DATE | WBS_END_DATE | WBS_DURATION | MILESTONE_SEQ_NO | PRD_INSP_PLAN_ID | SETUP_INSPECT_REQ | RUN_INSPECT_REQ |     STATUS_EFF_DATE     | PRED_SUB_ID | PRED_SEQ_NO | SITE_ID |

| 13451 | M              | 0006-12096        |                0 |                  0 |                0 |          10 | 280LASERS       | 0.250     | 600.00000000 | PCS/HR   | NULL          | 1.67    | NULL     | 0.000        | NULL       | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 13.95             | 13.95           | 0.000000          | 98.42            | 98.42          | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 26.74            | 188.64           | 0.00             | 26.74            | 188.64           | 0.00             | 0.00             | 0.00             | 0.00             | 34.66            | 0.00             | 0.00             | 0.00             | 34.66            | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 0.00            | NULL      | NULL              | NULL            | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |
| 13452 | M              | 0006-12096        |                0 |                  0 |                0 |          20 | 800-QC          | 0.000     | 0.00000000   | HRS/PC   | NULL          | 0.00    | NULL     | 0.000        | NULL       | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 0.00              | 0.00            | 0.000000          | 0.00             | 0.00           | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 0.00            | NULL      | NULL              | NULL            | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |
| 13453 | M              | 0006-12096        |                0 |                  0 |                0 |          30 | TRANSMATL       | 0.000     | 0.00000000   | HRS/PC   | NULL          | 0.00    | NULL     | 0.000        | NULL       | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 0.00              | 0.00            | 0.000000          | 0.00             | 0.00           | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 0.00            | V00198    | 80011             | 7014A64H01      | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |
| 13454 | M              | 0006-12096        |                0 |                  0 |                0 |          40 | Outside Service | 0.000     | 0.00000000   | DAYS/PC  | NULL          | 0.00    | NULL     | 7.000        | 80618      | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 0.00              | 0.00            | 0.290000          | 0.00             | 0.00           | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 0.00             | 0.00             | 290.00           | 0.00             | 0.00             | 290.00           | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 75.00           | V00207    | 80618             | NULL            | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |
| 13455 | M              | 0006-12096        |                0 |                  0 |                0 |          50 | RECVMATL        | 0.000     | 0.00000000   | HRS/PC   | NULL          | 0.00    | NULL     | 0.000        | NULL       | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 0.00              | 0.00            | 0.000000          | 0.00             | 0.00           | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 75.00           | NULL      | NULL              | NULL            | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |
| 13456 | M              | 0006-12096        |                0 |                  0 |                0 |          60 | 800-QC          | 0.000     | 0.00000000   | HRS/PC   | NULL          | 0.00    | NULL     | 0.000        | NULL       | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 0.00              | 0.00            | 0.000000          | 0.00             | 0.00           | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 75.00           | NULL      | NULL              | NULL            | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |
| 13457 | M              | 0006-12096        |                0 |                  0 |                0 |          70 | TRANSMATL       | 0.000     | 0.00000000   | HRS/PC   | NULL          | 0.00    | NULL     | 0.000        | NULL       | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 0.00              | 0.00            | 0.000000          | 0.00             | 0.00           | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 75.00           | NULL      | NULL              | NULL            | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |
| 13458 | M              | 0006-12096        |                0 |                  0 |                0 |          80 | RECVMATL        | 0.000     | 0.00000000   | HRS/PC   | NULL          | 0.00    | NULL     | 0.000        | NULL       | 0.00            | S                | 0.0000            | NULL             | 1000.0000      | 1000.0000    | 0.0000        | 0.0000       | 0.00          | 0.00        | U      | N               | NULL               | NULL       | NULL           | NULL       | NULL           | N             | N                  | NULL               | NULL               | NULL    | NULL    | NULL             | NULL              | NULL              | N             | 0.00              | 0.00            | 0.000000          | 0.00             | 0.00           | 0.000000         | 0.00             | 0.000             | 0.000           | 0.00              | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.00             | 0.0000           | NULL         |             0 | NULL             | N            | NULL         | 0.0000         | 75.00           | NULL      | NULL              | NULL            | NULL           | NULL           | NULL         | 0.0000        | 0.0000        | NULL               | NULL            | NULL           | NULL         | NULL           | NULL              | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL   | NULL    | NULL          | NULL             | NULL           | NULL             | N              | N                 | NULL     | NULL           | NULL         | NULL         | NULL             | NULL             | N                 | N               | 2013-07-29 00:00:00.000 | NULL        | NULL        | GAR     |

【问题讨论】:

  • 您是否也可以在上面进行编辑以发布两个表中的行样本,这些表产生您已经发布的输出?这将有助于理解这两个表之间的关系。另外,我不确定您所说的我不知道如何以这种方式操作SQL 中的数据输出 是什么意思。在连接的ON 中使用多个匹配条件是有效的,如果这是表达关系所需要的。
  • 顺便说一句,欢迎来到 Stack Overflow。
  • 在我看来,“INNER JOIN ON WORK_ORDER.BASE_ID = OPERATION.WORKORDER_BASE_ID AND WORK_ORDER.SUB_ID = OPERATION.WORKORDER_SUB_ID”正是你想要的……所以你为什么不试试呢?
  • 您没有分组,也没有聚合函数,因此您得到的正是您所要求的 - 所有满足 where 要求的记录。
  • 你唯一的JOINingBASE_ID,它似乎不足以区分PART_ID 行。因此,您是JOINing 每个PART_IDWORK_ORDER 表中的BASE_IDOPERATION 表中的SUB_IDs

标签: php sql sql-server join


【解决方案1】:

贾斯汀,

看来您正在编写 WorkStation_Next_Available_Task rpt。

您需要工作单和操作序列列表,其中下一个未完成的操作是 Status = R (Ready),WorkCenter 是“280-Lasers”。换句话说,下一个工作步骤所在的所有工作订单都在工作中心“280-Lasers”上进行,按需求日期升序排序,然后是操作顺序#。

如果这是正确的,那么您的 SQL 需要一个子选择,以便您只获得那些准备好 NEXT AVAILABLE 操作步骤并且跨工作中心“280-Lasers”的作业。但似乎您正在从任何具有跨工作中心“280-Lasers”的任何就绪操作的任何工作中获得所有操作

要解决此问题,请在评估操作状态 = 'R' 的 where 测试之后添加一个子选择

应该是这样的:

AND   OPERATIONS.Seq_Num = ( 
                    Select  TOP 1 Oper.Seq_Num
                    FROM    OPERATION Oper 
                    Where   Oper.WorkOerder_Base_Id = WORK_ORDER.BASE_ID 
                        AND     Oper.Resource_ID = '280_LASERS'
                        AND     Oper.Status = 'R'
                )

另外,删除测试

Oper.Resource_ID = '280_LASERS'

AND     Oper.Status = 'R'

来自您现有的 Where 条件。让子选择来做。

完整的sql:

SELECT
  WORK_ORDER.BASE_ID,
  OPERATION.WORKORDER_SUB_ID,
  WORK_ORDER.PART_ID,
  OPERATION.SETUP_HRS,
  OPERATION.RUN,
  OPERATION.RUN_TYPE,
  OPERATION.RUN_HRS,
  WORK_ORDER.DESIRED_QTY,
  WORK_ORDER.DESIRED_WANT_DATE,
  WORK_ORDER.COMMODITY_CODE
FROM
  dbo.WORK_ORDER
  JOIN dbo.OPERATION ON WORK_ORDER.BASE_ID = OPERATION.WORKORDER_BASE_ID
WHERE
  OPERATION.Sequence_No = ( 


                    Select  TOP 1 Oper.Sequence_No
                    FROM    OPERATION Oper      
                    Where   Oper.WorkOrder_Base_Id =     WORK_ORDER.BASE_ID         
                        AND Oper.Resource_ID = '280LASERS'        
                        AND OPERATION.STATUS='R'
                    )
ORDER BY
  DESIRED_WANT_DATE,
  OPERATION.WORKORDER_SUB_ID;

【讨论】:

  • 贾斯汀,我已将完整的 SQL 添加到上面的答案块中。我将您的数据样本导入到我家中的 SQL Server 并确认了 SQL。您的 Work_Order 和 Operations 表中的数据样本与上述示例中的数据不同,因此我无法绝对证明结果,但已在这两个数据源上尽我所能。试一试,如果问题仍然存在......回信。我在 Mfg 工作了一段时间,所以这是一个非常熟悉的问题。也很有趣/:-)
  • oops...在子选择中发现拼写错误,AND OPERATION.STATUS= 'R' 应该是 AND Oper.STATUS = 'R'
  • Juan,非常感谢您的帮助,我觉得我们离解决方案越来越近了。胡安 我希望能够为您提供餐桌信息。我有一个有更多信息,可以让我更好地概述我需要帮助的部分,但它们大大超过了可接受的字符。计数(主要是由于格式的可读性)。我有什么办法可以发布这些信息,即使它必须在其他地方?对于给您带来的麻烦,我深表歉意,但我是论坛使用新手,不熟悉交易技巧。
【解决方案2】:

完整的 SQL:

Declare @BaseId as Varchar(10) = 'W146589'

SELECT
        WORK_ORDER.BASE_ID          
    ,   WORK_ORDER.PART_ID  
    ,   WORK_ORDER.DESIRED_QTY  
    ,   WO.DESIRED_WANT_DATE 
    ,   WO.COMMODITY_CODE   
    ,   OPERATION.WORKORDER_BASE_ID         
    ,   OPERATION.WORKORDER_SUB_ID      
    ,   OPERATION.SETUP_HRS
    ,   OPERATION.RUN           
    ,   OPERATION.RUN_TYPE
    ,   OPERATION.RUN_HRS

FROM
        WORK_ORDER
JOIN            
        WORK_ORDER  WO  
    ON  WORK_ORDER.BASE_ID      =   WO.BASE_ID
    AND WO.SUB_ID = 0 
JOIN    OPERATION 
    ON  WORK_ORDER.BASE_ID      =   @BaseId
    AND WORK_ORDER.BASE_ID      =   OPERATION.WORKORDER_BASE_ID
    AND WORK_ORDER.SUB_ID       =   OPERATION.WORKORDER_SUB_ID  

WHERE   OPERATION.Sequence_No   =   ( 
                                    SELECT  TOP 1 Oper.Sequence_No
                                    FROM    OPERATION Oper      
                                    WHERE   Oper.WorkOrder_Base_Id  =   WORK_ORDER.BASE_ID      
                                        AND Oper.Resource_ID        =   OPERATION.Resource_ID
                                        AND Oper.Resource_ID        =   '280LASERS'       
                                        AND Oper.Status             =   'R'                                     
                                        AND Oper.Status             =   OPERATION.Status
                                    )
ORDER 
    BY
        OPERATION.WORKORDER_SUB_ID  
    ,   WORK_ORDER.BASE_ID          
    ,   WORK_ORDER.PART_ID      
    ,   DESIRED_WANT_DATE

;

【讨论】:

  • 胡安,这看起来很棒,非常感谢。我有 2 个问题要问你。因为,我将在 PHP 中使用此代码将信息打印到页面上,我可以让此代码拉出所有符合条件的工作订单(状态 ='R' 和/或有某个所需的想要日期)吗?我觉得通过查看代码这应该通过简单地删除引用@BaseId的2行来完成,是这样吗?
  • 是的,贾斯汀。如所写,它将搜索范围缩小到单个工作中心:280LASERS 和单个 Base_ID:“W146589”。您可以更改这些,或删除它们,或任何您需要的组合。您还可以按日期过滤,方法是添加参数,然后在 Where 子句中使用它(另外,在 Sequence_No 的测试之外)。
  • 嘿,胡安,最后一件事,这是次要的,但是当我在 SQL 中运行此查询时,需要 13:45 才能返回数据。但是,当我只运行一个简单的 SELECT * FROM WORK_ORDER 时,它需要 0:01 秒,你为什么认为它需要这么长时间并且无论如何可以加快速度?我只知道当它开始在 PHP 中运行时,它对大多数人来说会很麻烦。
  • 可能是索引的东西。你能告诉我这些表上所有索引的 DDL 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多