помогите написать запрос

alex77

Новичок
помогите написать запрос

Здравствуйте.

Есть таблица tbl

Код:
id    doc_id    stage    position
1     1         exp      1
2     1         exp      2
3     1         int      3
4     2         int      1
5     2         exp      2
6     2         exp      3
7     3         exp      1
8     3         pos      2
9     3         int      3
надо получить все doc_id, у которых stage = "int" и максимальный position для этого doc_id, одним запросом.

т.е. должно получиться doc_id 1 и 3.

версия MySQL 5.0.45
 

alex77

Новичок
max(`position`) и group by `doc_id` это ясно,
но ещё надо чтобы при этом stage = "int".
 

Gas

может по одной?
ну так все части пазла уже были:
[SQL]
SELECT `doc_id`, max(`position`), SUM(IF(stage='int',1,0)) AS isInt
FROM tbl
group by `doc_id`
HAVING isInt > 0
[/SQL]
 

Gas

может по одной?
Mols
не, тогда не получишь максимальный position
 

Mols

Новичок
э-э-э.... не понял ничего.... ему нужен вроде максимальный из тех строк у которых stage = 'int'?
З.Ы.
хотя конечно может Вы и правы... и ему нужен максимальный `position` безотносительно от значения поля stage и важно только лишь чтобы одна из записей для doc_id содержала stage = 'int'
 

alex77

Новичок
нужны те doc_id,у которых максимальный position для этого doc_id, и при этом ещё и stage = 'int'
 

Pigmeich

Новичок
не проверял, не запрашивал.

Но, похоже, условия выражаются как
[sql]where stage = 'int' and position = select max(position) from tbl[/sql]

Додебажите сами?
 
Сверху