структура моей БД примерно такая (упрощенная):
Три таблицы: Порядок, шаг, материал
Таблица "Порядок" содержит столбцы ID
и material
Таблица «шаг» содержит столбец ID
, order
и stepnumber
Таблица «материал» содержит столбец ID
и description
Order
--------------------------------
**ID** **Number** **Material**
1 X1 11
2 X2 12
3 X3 13
Step
---------------------------------------
**ID** **Order** **Stepnumber***
1 X1 X110
2 X1 X120
3 X1 X170
4 X1 X180
5 X2 X270
6 X2 X280
Material
---------------------------------------
**ID** **Description***
11 Mat1
12 Mat2
13 Mat3
Следует отметить, что столбец stepnumber
таблицы состоит из номера заказа (например, X1) и номера, обозначающего шаг (10, 20, 70, 80 и т. Д.),и, как вы можете видеть, есть несколько значений столбца stepnumber
, которые относятся к одному и тому же порядку.
Я использую этот запрос:
select order.number,step.stepnumber, material.id,material.description,
from db.order inner join db.stepnumber
on order.number = step.order
inner join db.material
on material.id = order.material
where step.stepnumber not like '%10'
and step.stepnumber not like '%20'
group by order.number, step.stepnumber, material.id, material.description
Как вы можете видеть иззапрос, я хочу извлечь данные заказа и шага, и я исключаю некоторый шаг, основанный на значении stepnumber
.
Прямо сейчас, вывод запроса:
order.number step.stepnumber material.id material.description
-------------------------------------------------------------
X1 X170 11 Mat1
X1 X180 11 Mat1
X2 X270 12 Mat2
X2 X280 12 Mat2
IЯ хочу добиться, чтобы для каждого заказа была извлечена только одна строка, взяв ту, в которой значение stepnumber
выше.Таким образом, результаты должны быть:
order.number step.stepnumber material.id material.description
-------------------------------------------------------------
X1 X180 11 Mat1
X2 X280 12 Mat2
Я пытался поместить функцию MAX
в step.stepnumber
в выборе без эффекта.