PSLine2000Documentation/Queries/Query14.md

2.7 KiB

Query14

Analysis generated on: 4/2/2025 10:09:05 AM

SQL Statement

SELECT Process.PartNumber, Process.PartName, Process.ActualPartHeight, Process.ActualPartWidth, IIf([ActualPartHeight]>=19 Or [ActualPartWidth]>=19,"Y","N") AS [Check]
FROM PartsToQuery LEFT JOIN Process ON PartsToQuery.PNwRev = Process.PartNumber
WHERE (((IIf([ActualPartHeight]>=19 Or [ActualPartWidth]>=19,"Y","N"))="Y"));

Dependencies

Parameters

  • None

What it does

SQL Code Explanation

Overview

This SQL query retrieves data from two tables: PartsToQuery and Process. The query joins the two tables on a common column, filters results based on a conditional check, and selects specific columns for each row.

Column Selection

The query selects four columns from the Process table:

  • PartNumber: a unique identifier for each part
  • PartName: the name of the part
  • ActualPartHeight: the actual height of the part
  • ActualPartWidth: the actual width of the part

Conditional Check

The query applies an IIF (Conditional Expression) check to the ActualPartHeight and ActualPartWidth columns. If either column is greater than or equal to 19, the expression returns "Y", otherwise it returns "N".

This condition is used in two places:

  • The first occurrence of IIf checks if there are any rows where the condition is true ([ActualPartHeight]\u003e=19 Or [ActualPartWidth)\u003e=19="Y").
  • The second occurrence of IIf filters the results to only include rows where the condition is true.

Join and Filter

The query joins the PartsToQuery table with the Process table on the PNwRev column, which matches the PartNumber in both tables.

However, the filtering condition uses a self-referential clause that's unlikely to produce meaningful results. Since it filters by rows where the condition is true, there will only be one row left if any conditions are met, making this part of the query potentially confusing and inefficient.

Query Improvement Suggestions

  • Simplify the filtering condition using IN or EXISTS, as it's not clear why you'd want to use an IIF function here.
  • Use a proper JOIN instead of an explicit LEFT JOIN with a filter condition, which can lead to unexpected results.
  • Consider indexing the columns involved in the WHERE clause to improve performance.

Sample Output

PartNumber PartName ActualPartHeight ActualPartWidth Check
... ... ... ... Y

Note that the actual output will depend on the data in the PartsToQuery and Process tables.