Помогите с sql-запросом

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Zaharium
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.05.2009 (Ср) 22:43

Помогите с sql-запросом

Сообщение Zaharium » 30.07.2009 (Чт) 23:55

В БД имеется три таблицы : A, B, C, в каждой из которых всего по одному полю с именем F
В столбцах содержатся различные значения (скажем, цифровые), причём в каждом отдельном столбце они не повторяются, но могут совпадать со значениями в других столбцах.
Как составить запрос, чтобы получить таблицу результатов из трёх столбцов (А1, B1, C1), в каждом из которых останутся лишь те значения из соответствующих таблиц, которые имеют хотя бы одну пару в других столбцах.

Для того, чтобы было понятнее:

А.F B.F C.F
123 116 89
176 134 110
238 176 123
293 215 150
389 370 176
395 478 289
478 490 490
567 511
558



Должно получиться:
A1 B1 C1
123 176 123
176 478 176
478 490 490


Помогите профану. Нутром чую, что решение - элементарно, но как не пробую - не получается.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Помогите с sql-запросом

Сообщение HandKot » 31.07.2009 (Пт) 7:38

не корректно поставлен вопрос.
проблема в том, что в базе нет понятия номер записи, если это не оговорено отдельно в виде дополнительно поля

в Вашем случае такого поля нет и в результате почему должно получится

    A1 B1 C1
    123 176 123
а не
    A1 B1 C1
    123 134 123
или как - то иначе?


ЗЫЖ так же сообщите БД с которой вы работаете
I Have Nine Lives You Have One Only
THINK!

Zaharium
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.05.2009 (Ср) 22:43

Re: Помогите с sql-запросом

Сообщение Zaharium » 31.07.2009 (Пт) 23:33

Да мне без разницы, в каком порядке в столбцах выводятся записи. И где Вы у меня увидели какое-то упоминание о номерах записей. Есть три столбца, в которых в произвольном порядке расположены числа. По результатам запроса надо вывести только те числа, которые имеют пары в других столбцах. Вот и всё...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Помогите с sql-запросом

Сообщение alibek » 01.08.2009 (Сб) 8:21

Можно сделать union, а затем внешний джойн с каждой таблицей.
Lasciate ogni speranza, voi ch'entrate.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Помогите с sql-запросом

Сообщение SLIM » 02.08.2009 (Вс) 21:46

Должно получиться inner join-ом.
Позже попробую, покажу


UPD::

Ну что я могу сказать. У меня не получилось сделать именно так чтобы значения не повторялись. На мой взгляд это очень тяжело сделать (если возможно вообще). Значения выводятся, но их например для твоего случая 27 строк (3*3*3. По три записи на каждую выборку.)

Код: Выделить всё
SELECT A.F1 as A,  B.F1 as B,  C.F1 as C  from
(SELECT Table_1.F1  FROM Table_1 INNER JOIN Table_2 ON Table_1.F1 = Table_2.F1 union SELECT Table_1.F1  FROM Table_1 INNER JOIN Table_3 ON Table_1.F1 = Table_3.F1) AS A,
(SELECT Table_2.F1  FROM Table_2 INNER JOIN Table_3 ON Table_2.F1 = Table_3.F1 union SELECT Table_2.F1  FROM Table_2 INNER JOIN Table_1 ON Table_2.F1 = Table_1.F1 ) AS B,
(SELECT Table_3.F1  FROM Table_3 INNER JOIN Table_1 ON Table_3.F1 = Table_1.F1 union SELECT Table_3.F1  FROM Table_3 INNER JOIN Table_2 ON Table_3.F1 = Table_2.F1 ) AS C

Это если выводить именно по столбца.

Если выводить все немного по-иному то полегче. Можно в формате

Значение | Таблица_1 | Таблица_2
123 A B
176
478

Для примера.
Я бы выбрал второй вариант например.
Просто пойми, работать в том формате, в котором ты хочешь будет неудобно. Как ты отберешь записи, которые содержат пары A-B или например B_C?
Пишите жизнь на чистовик.....переписать не удастся.....


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

    TopList