Змінюй хід війни! Допомагай ЗСУ!

Вопрос знатокам SQL

🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
Статус: Offline
Реєстрація: 24.07.2007
Повідом.: 91
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #1
Вопрос знатокам SQL

В общем задача следующая: есть 2 таблицы:

Таблица 1
|№зап_1|Расшифровка|


Таблица 2
|Номер Записи_2|№зап_1.1|№зап_1.2|№зап-1.3|

В таблице 1 есть два поля: #записи и расшифровка.
В таблице 2: #записи и три поля, содержащие разные номера из табл.1.
Задача: Нужно получить таблицу, структурой как табл.2, но не с номерами, а расшифровками из табл.1.

Помогите, пожалуйста, составить запрос, - очень нужно!!!
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #2
Что то вроде этого

select table2.id, t1_1.description, t1_2.description, t1_3.description
from table2
join table1 t1_1 on t1_1.id = table2.id1
join table1 t1_2 on t1_2.id = table2.id2
join table1 t1_3 on t1_3.id = table2.id3
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #3
Что то вроде этого

select table2.id, t1_1.description, t1_2.description, t1_3.description
from table2
join table1 t1_1 on t1_1.id = table2.id1
join table1 t1_2 on t1_2.id = table2.id2
join table1 t1_3 on t1_3.id = table2.id3

Ну и соответствено с поседней строчкой
where table2.id= ...

А если такое нужно постоянно - можно и View создать
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #4
Что то вроде этого

select table2.id, t1_1.description, t1_2.description, t1_3.description
from table2
join table1 t1_1 on t1_1.id = table2.id1
join table1 t1_2 on t1_2.id = table2.id2
join table1 t1_3 on t1_3.id = table2.id3

ну так он же пишет, что номер записи больше не нужен соотв первый столбец не надо собирать...

нафиг тут слово join - не вижу вообще... вообще-то это был картезный продукт (т.е. все на вся), очень дорогая, а главное в данном месте не нужная операция...

и потом, я конечно понимаю, что много разных немного отличающихся синтаксисов, но ты в своем варианте типо пытаешься каждую строку связать? а если строк 10000? короче - смысла не вижу или чего-то не понимаю

select table1.description1, table2.description2, table2.description3
from table2, table1
where table1.id=table2.id
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #5
А если такое нужно постоянно - можно и View создать

а потом view на view и тд и тд....
ок тут речь идет о дом задании... но в жизне я видела кучу делов, когда эта стратегия очень ухудшало работу... в первую очередь не надо забывать, что вью генерируется каждый раз по новой - время, ресурсы
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #6
ну так он же пишет, что номер записи больше не нужен соотв первый столбец не надо собирать...

нафиг тут слово join - не вижу вообще... вообще-то это был картезный продукт (т.е. все на вся), очень дорогая, а главное в данном месте не нужная операция...

и потом, я конечно понимаю, что много разных немного отличающихся синтаксисов, но ты в своем варианте типо пытаешься каждую строку связать? а если строк 10000? короче - смысла не вижу или чего-то не понимаю

select table1.description1, table2.description2, table2.description3
from table2, table1
where table1.id=table2.id

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

Если внимательно прочитать условие, то видно, что таблица1 содержит только два поля и там нет никаких description1, description2, description...

Вот диаграма, чтобы было понятно
attachment.png


По поводу join'ов и того как вам видится они работают думаю лучше почитать книжках.

Как затравка существует несколько видов join'ов и тот что вы описали это "cross join".
 

Вкладення

  • scheme1.PNG
    scheme1.PNG
    7.9 КБ · Перегляди: 177
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #7
Скорее всего чего то не понимаете.

я не есть эксперт access, но я и в описании задания нигде слово ассеss не увидела...:язик:

в простом sql, а так же pl/sql всё то что я написала будет работать так как хочет того ТС
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #8
я не есть эксперт access, но я и в описании задания нигде слово ассеss не увидела...:язик:

в простом sql, а так же pl/sql всё то что я написала будет работать так как хочет того ТС

Гыгыг, как ни странно я тоже не есть эксперт access, это диграма
MS SQL Server Enterprise Manager, а синтаксис моего примера T-SQL.

мы канешна университетов не кончали и pl/sql как Вы не знаем, но простой sql как то осилили.

Чтоб не быть голословной, приведите рабочий пример с созданием таблиц, их заполнением и выборкой того, что хочет ТС.
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #9

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

но как бы там ни было, все равно мой запрос выглядит так:
SELECT Table1.desc, Table2.desc1, Table2.desc2, Table2.desc3
FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id;
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #10
Гыгыг, как ни странно я тоже не есть эксперт access, это диграма
MS SQL Server Enterprise Manager, а синтаксис моего примера T-SQL.

мы канешна университетов не кончали и pl/sql как Вы не знаем, но простой sql как то осилили.

Чтоб не быть голословной, приведите рабочий пример с созданием таблиц, их заполнением и выборкой того, что хочет ТС.

всё, беру слова обратно... я не вьехала, что он ВСЕ столбцы из второй таблицы с id из первой таблицы соединить хочет...

вопрос только зачем кто-то будет хотеть такое сделать?
 
Останнє редагування:
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #11
всё, беру слова обратно... я не вьехала, что он ВСЕ столбцы из второй таблицы с id из первой таблицы соединить хочет...

вопрос только зачем кто-то будет хотеть такое сделать?

:пиво:

На самом деле я пару раз такую реализацию видел, не спорю что она не красивая, но попытка ее обойти может вылится в еще большие проблемы, так что тут надо больше на весть проект смотреть.
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #12
:пиво:

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

:пиво:
может у меня вообще мозг заржавел (я года два уже ничем подобным не занималась), но я бы настряпала, что то такое очень сложное...
или же как уже сказал гастелло, сначало бы изменила бы структуру таблицы

select table2.id, desc1, desc2
from table2,
table1_1(select table2.id as id, table1.desc as desc1
from table1, table2
where table2.id1=table1.id),
table1_2(select table2.id as id, table1.desc as desc2
from table1, table2
where table2.id2=table1.id
)
where table2.id=table1_1.id
and table2.id=table1_2.id

а ну и аналогично для 3го столбца
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #13
Огромное спасибо Всем за участие!!!
На самом деле таблицы состоят далеко не из трех полей.
В общем то первая таблица содержит данные о работниках предприятия, включая фио, должность, пасп данные и т.п. А вторая данные о заказах как то дата, ид.заказчика, и много еще.
Вся фишка в том, что один заказ выполняет три работника разных должностей из первой таблицы, отсюда и кривая структура.
Я в итоге решил забить на возможность сортировки и выводить данные в LookUp-ax (кто знаком с Delphi).
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #14
DEM, а к вам встрять на работу со знаниями делфеёв и эскуэлей никак нельзя? Пардон за оффтоп...
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #15
:пиво:
select table2.id, desc1, desc2
from table2,
table1_1(select table2.id as id, table1.desc as desc1
from table1, table2
where table2.id1=table1.id),
table1_2(select table2.id as id, table1.desc as desc2
from table1, table2
where table2.id2=table1.id
)
where table2.id=table1_1.id
and table2.id=table1_2.id

а ну и аналогично для 3го столбца

вложенные запросы вроде как сильно повышают требования к памяти и снижают быстродействие, особенно если каждая таблица по гигабайту занимает... :rolleyes:
 
  • 🟠 10:19 Загроза ударних БпЛА- Загроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #16
Огромное спасибо Всем за участие!!!
На самом деле таблицы состоят далеко не из трех полей.
В общем то первая таблица содержит данные о работниках предприятия, включая фио, должность, пасп данные и т.п. А вторая данные о заказах как то дата, ид.заказчика, и много еще.
Вся фишка в том, что один заказ выполняет три работника разных должностей из первой таблицы, отсюда и кривая структура.
Я в итоге решил забить на возможность сортировки и выводить данные в LookUp-ax (кто знаком с Delphi).
Тебе катастрофически не хватает кроссовой таблицы, в которой будете пересечение работничков из первой и заказов из второй. База перестанет быть планарной (в этой части)
 
Назад
Зверху Знизу