Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Помогите составить запрос Добавлено: 24.05.06 03:59  

Автор вопроса:  CyRax  | Web-сайт: basicproduction.nm.ru | ICQ: 204447456 
/*
Фомируется табличка.

Необходимо построить запрос, который возврящает набор отвечающий условиям:

1. В каждой строке id1 должно быть уникальным.
2. Если в двух строчках один и тот же id1, надо выбрать ту строку, в которой id3 - минимально
3. Если у нескольких строк совпадает id1 и id3, можно выбрать любую.

В данном примере результат может быть таким (он не однозначен из-за 3 пункта)
1                    1                    1
2                    1                    1
3                    1                    1
4                    1                    5
5                    10                   3
*/

begin tran 111

SEt nocount on

CREATE TABLE #tab (
        [ID1] [numeric](18, 0),
        [ID2] [numeric](18, 0),
        [ID3] [numeric](18, 0))

Insert Into #tab (id1, id2, id3) Values (1,1,1)
Insert Into #tab (id1, id2, id3) Values (1,0,1)
Insert Into #tab (id1, id2, id3) Values (1,3,2)

Insert Into #tab (id1, id2, id3) Values (2,1,1)
Insert Into #tab (id1, id2, id3) Values (2,-1,1)
Insert Into #tab (id1, id2, id3) Values (2,3,2)

Insert Into #tab (id1, id2, id3) Values (3,2,1)
Insert Into #tab (id1, id2, id3) Values (3,0,1)
Insert Into #tab (id1, id2, id3) Values (3,2,2)
 
Insert Into #tab (id1, id2, id3) Values (4,1,5)
Insert Into #tab (id1, id2, id3) Values (4,0,6)
Insert Into #tab (id1, id2, id3) Values (4,3,7)
 
Insert Into #tab (id1, id2, id3) Values (5,1,3)
Insert Into #tab (id1, id2, id3) Values (5,5,3)
Insert Into #tab (id1, id2, id3) Values (5,10,3)
 
SELECT * From #tab
-- Тут писать код
drop table #tab

 Может быть что то типа
WHERE UNIQUE (SELECT ID3 FROM TBL WHERE ID3 > ALL)?

Сам sql-сервера не имею, поэтому, прежде чем пытаться адаптировать под VB, хотелось бы услышать мнение знатоков.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 24.05.06 11:10
http://www.sql.ru/articles/mssql/2005/030401SpeedUpSELECT_DISTINCTqueries.shtml

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 24.05.06 14:11
тут очень нехреновый запрос получится! Проще программно, ибо от такого запроса рехнуться можно :)

пукт 1 и 2 с трудом стыковываются
1. В каждой строке id1 должно быть уникальным.

2. Если в двух строчках один и тот же id1


выборку без дубликатов по ид1, примерно так...
SELECT DISTINCT id1 FROM #tab

а дальше кошмар...
или куча вложенных select from + min... это теоретически, практически ничего неполучается
или своя ф-ция которая (на SO!) которая принимает 3 параметра и возвращает эту записть в случае совпадений условий при определённыом id1, id2, id3...

короче задача практически не поддаётся мозговому штурму (ИМХО), наверное проще полсе удаления дубликатов id1 далее выберать программно...

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 24.05.06 21:15
SELECT DISTINCT id1 FROM #tab

 В задании запрос начинается с "SELECT * From #tab", так что такой способ не подойдёт.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам