Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.04;
Скачать: CL | DM;

Вниз

SQL запрос   Найти похожие ветки 

 
charoey_mag   (2008-11-21 13:36) [0]

Ни как не могу сообразить, можно ли на SQL написать запрос к талице. В таблице содержится инвентаризационный список выч. техники вида:
UnikID - InvNom - Type - Name - Room - ......
1 123001   СисБл   Celeron - 1 - ....
2 123001    Мон   LCD - 1 - ....
.....
Если И системный блок И монитор имеют один и тот же инвентарник то это Комплект, если нет то нет.
И вопрос как найти все комплекты/не комплекты и как найти Собранные комплекты, если и Системный блок и Монитор находятся в одной комнате?


 
Правильный$Вася   (2008-11-21 13:50) [1]

для начала - заняться нормализацией данных, а потом пытатться комплекты по комнатам собирать


 
Сергей М. ©   (2008-11-21 14:02) [2]

И это все одним запросом нужно реализовать ?


 
Sergey13 ©   (2008-11-21 14:10) [3]

> [0] charoey_mag   (21.11.08 13:36)
> Если И системный блок И монитор имеют один и тот же инвентарник
> то это Комплект, если нет то нет.

А если комплект - это системник, моник, сканер, принтер и модем?
Ты по моему не запрос хочешь составить, а ищешь аналог "По щучьему веленью, по моему хотенью", при этом на руках имея одну ненормализованную таблицу.


 
charoey_mag   (2008-11-21 14:18) [4]


> И это все одним запросом нужно реализовать ?

Комплект отдельно, Не комплект отдельно, и Собранный комплект наверное из запроса Комплект.

> А если комплект - это системник, моник, сканер, принтер
> и модем

Пока комплектом считается только Монитор и СБ(кл+м) входят в состав СБ, остальное отдельно но возможно понадобится и такой запрос. Его я думаю будет легче собрать.

> для начала - заняться нормализацией данных

Что тут является не нормализованным? И второе я не имею к базе доступа на изменение, только на запросы.
PS. База Access если это имеет значение


 
Sergey13 ©   (2008-11-21 14:30) [5]

> [4] charoey_mag   (21.11.08 14:18)
> Пока комплектом считается только Монитор и СБ

С таким подходом базами лучше не заниматься, ИМХО.

Скорее всего твои запросы пишутся по формуле

Select условие_группировки,count(*)
where table_name
group by условие_группировки
having count(*)> по смыслу

и возможно дорабатываются напильником


 
stas ©   (2008-11-21 14:44) [6]

Начнем с сервера что за СУБД ?

например так:
Select INVNOM, CASE WHEN COUNT (*)>1 THEN "Комплект" ELSE MAX(NAME) END
GROUP BY INVNOM


 
charoey_mag   (2008-11-21 14:56) [7]


> Начнем с сервера что за СУБД ?

> С таким подходом базами лучше не заниматься, ИМХО.



> PS. База Access если это имеет значение


> И второе я не имею к базе доступа на изменение, только на
> запросы.

Я тоже могу сколь угодно много рассказывать о том какой не хороший человек "архитектурил" эту базу, однако необходимость конструктивного решения вопроса это не снимает...


 
Anatoly Podgoretsky ©   (2008-11-21 14:59) [8]

> charoey_mag  (21.11.2008 13:36:00)  [0]

Тебе решение правильное или научное?


 
charoey_mag   (2008-11-21 15:03) [9]


> Тебе решение правильное или научное?

Решение - само слово подразумевает исполнение поставленной задачи, какое оно будет, я не думаю что это имеет критическое значание, к конце концов если решений много то можно выбрать оптимальное, так?


 
Anatoly Podgoretsky ©   (2008-11-21 15:11) [10]

> charoey_mag  (21.11.2008 15:03:09)  [9]

Уговорил.
Просто брось программировать.


 
Сергей М. ©   (2008-11-21 15:21) [11]


> charoey_mag


Тебе для отчетов это надо ?

Если да и данных в таблице сравнительно немного, то не заморачивайся с сиквелом - просто засоси таблицу целиком в массив на сторону клиента, и там уже безо всяких сиквелов гуляй по массиву как тебе вздумается: сортируй, группируй, фильтруй хорошо знакомыми тебе языковыми и иными средствами Делфи.


 
stas ©   (2008-11-21 16:41) [12]

ACCESS тогда вместо CASE используй IIF.


 
charodey_mag   (2008-11-22 12:58) [13]


> Если да и данных в таблице сравнительно немного, то не заморачивайся
> с сиквелом - просто засоси таблицу целиком в массив на сторону
> клиента, и там уже безо всяких сиквелов гуляй по массиву
> как тебе вздумается: сортируй, группируй, фильтруй хорошо
> знакомыми тебе языковыми и иными средствами Делфи.

База полностью в Access с использованием рабочей группы. А Basic я не знаю, и можно ли там это.

> ACCESS тогда вместо CASE используй IIF.

SELECT  IIF( COUNT (*)>1, "Комплект" ," ComEq.Name")
FROM ComEq;
Это возвращает всегда одну запись "Комплект", и не важно сколько повторов

Спасибо, за отклик и помощь

PS. Это не касается Anatoly Podgoretsky ©


 
palva ©   (2008-11-22 13:32) [14]


> UnikID - InvNom - Type - Name - Room - ......
> 1 123001   СисБл   Celeron - 1 - ....
> 2 123001    Мон   LCD - 1 - ....

Пишу на коленке:

SELECT a.InvNom FROM table1 a
JOIN table1 b ON a.InvNom=b.InvNom AND a.[Type]="СисБл" AND b.[Type]="Мон"

Должно выдать InvNom для всех комплектов. Комнату можно приделать в том же духе.


 
charodey_mag   (2008-11-22 14:17) [15]


> SELECT a.InvNom FROM table1 aJOIN table1 b ON a.InvNom=b.
> InvNom AND a.[Type]="СисБл" AND b.[Type]="Мон"

Я об этом с самого начала подумал, но при этом и мон. и СБ оказываются в одной стороке, а это неподходит.
Но все равно Спасибо.


 
Кщд   (2008-11-24 12:17) [16]

order by InvNom, Room


 
stas ©   (2008-11-24 16:58) [17]

charodey_mag   (22.11.08 12:58) [13]
Это
+ к моему предыдущему посту
SELECT  INVNOM,IIF( COUNT (*)>1, "Комплект" ," ComEq.Name")
FROM ComEq
GROUP BY INVNOM


 
stas ©   (2008-11-24 16:59) [18]

Точнее так
SELECT  INVNOM,IIF( COUNT (*)>1, "Комплект" ," FIRST(ComEq.Name))
FROM ComEq
GROUP BY INVNOM


 
charoey_mag   (2008-11-25 14:00) [19]


> stas ©   (24.11.08 16:59) [18]

Спасибо!, дальше буду сам разбираться.



Страницы: 1 вся ветка

Текущий архив: 2009.01.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
8-1188662758
Dr. Andrew
2007-09-01 20:05
2009.01.04
Как получить один цвет из другого?


15-1225720717
blackman
2008-11-03 16:58
2009.01.04
Что с сайтом?


15-1226091244
Petr V. Abramov
2008-11-07 23:54
2009.01.04
принтер godex ez-2200


2-1227343272
Barakuda
2008-11-22 11:41
2009.01.04
AnyDac ->MySQl


2-1227261354
Gurd
2008-11-21 12:55
2009.01.04
Шапка stringGrid как Excel