Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.01.04;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
15-1226091244
Petr V. Abramov
2008-11-07 23:54
2009.01.04
принтер godex ez-2200


15-1225951395
Slider007
2008-11-06 09:03
2009.01.04
С днем рождения ! 6 ноября 2008 четверг


2-1227161746
b@v
2008-11-20 09:15
2009.01.04
DBGrid и прокрутка


2-1227597152
F@T@L_Err0r
2008-11-25 10:12
2009.01.04
Запись голоса


2-1227459676
ИванН
2008-11-23 20:01
2009.01.04
TFileStream + soFromEnd





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский