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

Вниз

Слезно молю о помощи. Помогите с создать SQL.   Найти похожие ветки 

 
Worker   (2003-01-08 11:36) [0]

Суть проблемы: необходимо сравнить две модификации техники. Есть две большие таблицы(до 30 тыс.зап.) содержащие детали двух модификаций Tree001 и Tree002 с полями Child(уник.,для TreeView), Parent(для TreeView), NameSys(имя ветви-детали), Obozn(обозначение детали), FNN(имя ветви+обозначение, поле для связи с др. таблицами,т.к. обозначения может не быть). И таблицы для характеристик (они общие) Parts с полями FNNP(имя+обозначение),Har(индекс хар-ки), Znach(значение хар-ки) и таблица самих характеристик Har поля HHar(индекс хар-ки), NameHar(наимен.хар-ки).
Необходимо по выбранной хар-ке(Har.NameHar) или Обозначению(Obozn) или Наименованию(NameSys) сравнить другие характеристики, например Наименование(Tree001.NameSys Tree002.NameSys) или любые другие хар-ки по полю Znach так чтобы в результирующей таблице были бы одинаковые записи, различающися записи, существующие только в Tree001 и существующие только в Tree002.
Понимаю, что может несколько запутанно изложил, прошу извенений, но готов обсудить любые варианты вплоть до перестройки структуры базы. Помогите пожалуйста.


 
Mike Kouzmine   (2003-01-08 14:24) [1]

Напиши кратко структуру файлов и по каким поля надо их связывать, и что ты хочешь получить на выходе.


 
Worker   (2003-01-08 16:16) [2]

Таблица Tree001 поля Child(A)-ключ, Parent(A), NameSys(A), Obozn(A), FNN(A), то же для Tree002.
Таблица Parts поля FNNP(A) связано с Tree001.FNN и Tree002.FNN, Har(I), Znach(A).
Таблица Har поля HHar(I) связано с Parts.Har, NameHar(A).
Таблицы Parts и Har общие для всех модификаций.
Юзер выбирает по какому параметру будет идти сравнение(это может быть NameSys,Obozn или либая хар-ка Har.NameHar) и какие поля выводить для просмотра значений(это может быть NameSys,Obozn или либая хар-ка Har.NameHar).
В итоге в самом простом варианте должна получиться таблица из трех полей, первое: поле по которому производится сравнение, второе и третье - сравниваемые поля.
Например сравниваем по полю Obozn вывести надо поля Tree001.NameSys и Tree002.NameSys. Тогда в первой колонке должны быть все обозначения(Obozn) из Двух таблиц Tree001 и Tree002, а во второй и третьей Tree001.NameSys и Tree002.NameSys. Одно из полей Tree001.NameSys или Tree002.NameSys может быть пустым.


 
Delirium^.Tremens   (2003-01-08 16:22) [3]

:-) И первый и второй пост по 14 строк :-) (о краткости)


 
ZeroDivide   (2003-01-08 16:45) [4]

Слушай, а каким компонентом ты с Paradoxom работаешь?


 
MsGuns   (2003-01-08 17:14) [5]

SELECT T1.Obozn, T1.NameSys N1, T2.NameSys N2
FROM Tree001 T1, Tree002 N2
WHERE (T1.Obozn=T2.Obozn) AND (T1.Obozn="Какая-то деталь")
ORDER BY T1.Obozn, N1, N2

Оно ?


 
Worker   (2003-01-08 19:34) [6]

>ZeroDivide
>Слушай, а каким компонентом ты с Paradoxom работаешь?
TQuery


 
Worker   (2003-01-08 19:50) [7]

>MsGuns
Нет не оно потому, что условие T1.Obozn="Какая-то деталь" не может присутствовать, т.к нужны вообще все детали(без повторов), а не конкретная.


 
Worker   (2003-01-08 19:57) [8]

Главная задача не в сравнении(Grid автоматом красит различающиеся поля), а в получении ВСЕХ записей из двух таблиц и если есть одинаковые записи, то выводим только одну.


 
Геннадий   (2003-01-08 20:27) [9]

2 Worker

Извини, что не догнал твой вопрос - а ты не мог бы привести пример? Есть такие-то данные (пару строчек), делаем сравнение по вот такому критерию, а на выходе должно получиться вот так.


 
MsGuns   (2003-01-08 20:49) [10]

SELECT DISTINCT T1.Obozn, T1.NameSys N1, T2.NameSys N2
FROM Tree001 T1, Tree002 N2
WHERE T1.Obozn=T2.Obozn
ORDER BY T1.Obozn, N1, N2

Даст все уникальные по Obozn записи, присутствующие в обеих таблицах


 
Worker   (2003-01-08 21:04) [11]

Упростим вопрос, вот запросы:
Записи которых нет в Tree002
SELECT Tree001.Obozn, Tree001.NameSys
FROM Tree001
WHERE NOT EXISTS (SELECT Tree002.Obozn FROM Tree002
WHERE Tree001.Obozn=Tree002.Obozn)

Записи которых нет в Tree001
SELECT Tree002.Obozn, Tree002.NameSys
FROM Tree002
WHERE NOT EXISTS (SELECT Tree001.Obozn FROM Tree001
WHERE Tree002.Obozn=Tree001.Obozn)

Одинаковые записи
SELECT Obozn, Tree001.NameSys, Tree002.NameSys
FROM Tree001, Tree002
WHERE Tree002.Obozn=Tree001.Obozn

Можно ли все это сделать одним запросом или хотя бы двумя и чтобы SELECT был вида
SELECT Obozn, Tree001.NameSys, Tree002.NameSys.


 
Worker   (2003-01-08 21:08) [12]

Извиняюсь забыл:
Одинаковые записи
SELECT DISTINCT Obozn, Tree001.NameSys, Tree002.NameSys
FROM Tree001, Tree002
WHERE Tree002.Obozn=Tree001.Obozn


 
MsGuns   (2003-01-08 21:14) [13]

>Worker (08.01.03 21:04)
Поставь UNION, но надо позаботиться об "идентификаторе" группы, т.е. доп. поле, которое бы содержало одно из трех значений:
- есть только в 1-м
- есть только в 2-м
- есть и в 1-м и во 2-м


 
TTCustomDelphiMaster   (2003-01-08 21:21) [14]

Так что-ли?
SELECT T1.Ob, T1.Name, T2.Name
FROM "C:\\t1.db" T1
LEFT OUTER JOIN "C:\\t2.db" T2
ON (T1.Ob = T2.Ob)
union
SELECT T2.Ob, T1.Name, T2.Name
FROM "C:\\t2.db" T2
LEFT OUTER JOIN "C:\\t1.db" T1
ON (T2.Ob = T1.Ob)


 
Worker   (2003-01-09 10:14) [15]

Точно так. Спасибо огромное.



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

Форум: "Базы";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-86846
Gamar
2003-01-19 15:51
2003.01.27
Прерывание затяжной функции


1-86815
jen_bond
2003-01-18 17:02
2003.01.27
Распознование номера


1-86820
diks
2003-01-15 22:10
2003.01.27
Radiobutton


1-86767
Novice2
2003-01-17 16:21
2003.01.27
MDIForm


3-86691
SasaR
2003-01-09 11:19
2003.01.27
SUM(field) = null





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский