powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите разобраться с запросом (возможно, JOIN)
9 сообщений из 9, страница 1 из 1
Помогите разобраться с запросом (возможно, JOIN)
    #38126034
roman_lenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Прошу помочь в решении проблемы с извлечением данных сразу из нескольких таблиц. Я плохо знаком с SQL-запросами семейства "JOIN"(а я думаю, что решение моей проблемы ПРАВИЛЬНО реализуется именно посредством JOIN-запроса), поэтому обращаюсь к вам.

Пример. Есть 3 таблицы - смотрите их здесь - это удобнее: http://www.study.ua/sql-sample.htm

Для примера, возьмём Леопольда: исходя из данных его полей ГОРОД и ДОЛЖНОСТЬ:

"Леопольд" живёт в городе "Питер" и работает на должности "стажер".

Я легко могу выполнить запрос: select * from Люди where имя='Леопольд' и получу результат:

'Леопольд', 1, 2

А как мне объеденить запрос с таблицами городов и должностей, чтобы получить следующий результат?:

'Леопольд', 'Питер', 'стажер'

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

Спасибо!
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126159
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126179
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman_lenko,

select t1.имя,
t2.название,
t3.название
from Люди as t1
left join города as t2 on t1.город=t2.ид
left join должности as t3 on t1.должность=t3.ид
where t1.имя='Леопольд'
...
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126183
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И собственно непонял - почему вопрос в теме проектирования БД ? Как по мне в вопрос-ответ самое место.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126187
roman_lenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобрselect t1.имя,
t2.название,
t3.название
from Люди as t1
left join города as t2 on t1.город=t2.ид
left join должности as t3 on t1.должность=t3.ид
where t1.имя='Леопольд'
...

Спасибо! Попробую. Еще такой вопрос - сильно ли снижает быстродействие большое количество JOIN'ов в запросе? - не быстрее(в плане быстродействия) ли будет написать хранимую процедуру(чтобы скрыть громоздкость) состоящую, например, из нескольких SELECT'ов? - чисто на вскидку.

Злой БобрИ собственно непонял - почему вопрос в теме проектирования БД ? Как по мне в вопрос-ответ самое место.

Честно говоря, мне этот раздел показался наиболее подходящим - "Вопрос-ответ" я, к сожалению, не заметил - так бы туда и написал.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126204
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрКак по мне в вопрос-ответ самое место.

Самое место - раздел по используемой СУБД. Поскольку у каждой есть свои особенности.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126300
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman_lenko... сильно ли снижает быстродействие большое количество JOIN'ов в запросе?
Любой джойн идет медленнее чем прямой селект из одной таблицы. Но реалии таковы что в большинстве случаев нельзя обойтись данными только одной таблицы. Поэтому следует помнить о разумном балансе производительности при создании архитектуры БД.
roman_lenkoне быстрее(в плане быстродействия) ли будет написать хранимую процедуру(чтобы скрыть громоздкость) состоящую, например, из нескольких SELECT'ов? - чисто на вскидку.
Чисто навскидку - хранимка будет использовать те же джойны. Так что тут вопрос скорее - где и как будет логика. Т.е. в приложении или в БД. Оба варианта имеют место быть, все зависит от конкретной задачи. Зачастую даже возможен смешанный вариант.
Поскольку опыта у вас недостаточно - любой из вариантов вам подойдет. Со временем при желании разберетесь в плюсах и минусах. На данный момент я думаю вам это некритично. Если задача "боевая", то более важно сделать правильную архитектуру. Если учебная - читайте мануалы (методички), там должны быть пояснения.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126399
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman_lenkoЕще такой вопрос - сильно ли снижает быстродействие большое количество JOIN'ов в запросе? - не быстрее(в плане быстродействия) ли будет написать хранимую процедуру(чтобы скрыть громоздкость) состоящую, например, из нескольких SELECT'ов? - чисто на вскидку.Если запросы одинаковые, то без разницы
...
Рейтинг: 0 / 0
Помогите разобраться с запросом (возможно, JOIN)
    #38126513
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman_lenkoЕще такой вопрос - сильно ли снижает быстродействие большое количество JOIN'ов в запросе? - не быстрее(в плане быстродействия) ли будет написать хранимую процедуру(чтобы скрыть громоздкость) состоящую, например, из нескольких SELECT'ов? - чисто на вскидку.

Тогда уже лучше представление, его можно будет заюзать в других запросах (при необходимости).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите разобраться с запросом (возможно, JOIN)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]