Запрос

SinteZ
Дата: 07.09.2005 12:04:18
Суть такая:

Есть таблица [Текущие_заказы], в которой хранится список заказов. У каждого униакальный номер.
Каждый заказ может состоять из нескольких позиций. Они хранятся в другой таблице [Заказ] и связаны с первой через ID заказа. Соответственно в ней может быть несколько строк с одинаковым ID заказа.

Нужно составить запрос, чтобы он выводил список заказов, причем для каждого заказа выводилась бы только одна позиция.

Вот мой запрос:
SELECT Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус], Заказ.Тип, Заказ.Дата
FROM Текущие_заказы INNER JOIN Заказ ON Текущие_заказы.IDзаказа = Заказ.IDзаказа;

Он выводит такой список:
IDзаказа   Текущий статус	Тип                 Дата
--------------------------------------------------------
asd123	    Отложен	        Встреча ж/д	    21.07.2005
asd123	    Отложен	        Город	            21.07.2005
ger321	    Отложен	        Встреча аэро        27.07.2005
ger321	    Отложен	        Город               27.07.2005

А вот что хотелось бы получить:
IDзаказа   Текущий статус	Тип                 Дата
--------------------------------------------------------
asd123	    Отложен	        Встреча ж/д	    21.07.2005
ger321	    Отложен	        Встреча аэро        27.07.2005

HELP!!!!
Roma R
Дата: 07.09.2005 12:21:53
В чём проблема?
Добавь в запрос группировку, а поле тип выбирай первое!
Пользователь2
Дата: 07.09.2005 12:23:43
SELECT IDзаказа, [Текущий статус], First(Тип) AS [First-Тип], Дата
FROM Текущие_заказы
GROUP BY IDзаказа, [Текущий статус], Дата;
SinteZ
Дата: 07.09.2005 12:36:55
Вот модифицированный в связи с рекомендациями запрос:
SELECT Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус], Заказ.Тип, Заказ.Дата
FROM Текущие_заказы INNER JOIN Заказ ON Текущие_заказы.IDзаказа = Заказ.IDзаказа
GROUP BY Текущие_заказы.IDзаказа,  Заказ.Дата,Текущие_заказы.[Текущий статус], Заказ.Тип ;

Результат тотже. ((
Пользователь2
Дата: 07.09.2005 14:18:50
First пропустил.

SELECT Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус], 
First(Заказ.Тип) AS [First-Тип], Заказ.Дата
FROM Заказ INNER JOIN Текущие_заказы ON Заказ.IDзаказа = Текущие_заказы.IDзаказа
GROUP BY Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус], Заказ.Дата;
SinteZ
Дата: 08.09.2005 12:28:47
Этот запрос работает, спасибо! НО если добавить в него еще какие либо поля например так:
SELECT Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус],
First(Заказ.Тип) AS [First-Тип], Заказ.Дата
FROM Заказ INNER JOIN Текущие_заказы ON Заказ.IDзаказа = Текущие_заказы.IDзаказа
GROUP BY Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус], Заказ.Дата,
Текущие_заказы.IDмашины, Заказ.Откуда, Заказ.Куда;
То он снова выдает по несколько строк на заказ...
RVB
Дата: 08.09.2005 12:49:25
SinteZ
Этот запрос работает, спасибо! НО если добавить в него еще какие либо поля например так:
SELECT Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус],
First(Заказ.Тип) AS [First-Тип], Заказ.Дата
FROM Заказ INNER JOIN Текущие_заказы ON Заказ.IDзаказа = Текущие_заказы.IDзаказа
GROUP BY Текущие_заказы.IDзаказа, Текущие_заказы.[Текущий статус], Заказ.Дата,
Текущие_заказы.IDмашины, Заказ.Откуда, Заказ.Куда;
То он снова выдает по несколько строк на заказ...


Для этих полей тоже используйте First или Last. Но IMHO Ваши проблемы вызваны неправильной структурой таблиц.
SinteZ
Дата: 08.09.2005 13:36:04
Всем спасибо! Разобрался!