Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2009, 02:25   #1
GenbI4
 
Регистрация: 11.11.2009
Сообщений: 3
По умолчанию MySQL. Многотабличные запросы

Доброй ночи всем.

Имеется 3 таблицы. Главная и 2 справочника (справочник по 2 записи, с кодом и названием). Необходимо сформировать запрос на отображение в главной таблице всех значений данной + названия из справочников.

Запрос на один справочник получился. Вот как запихнуть туда второй вызвало проблемы.

SELECT /данные гл. табл./названия из1спр FROM 1тб. JOIN 1спр. ON 1тбл.kod1спр.=1спр.kod1спр. WHERE данные фильтра - Это получилось. Показал главную таблицу + названия из 1 спр. Хочется видеть ещё и названия из 2спр

Спасибо.

Последний раз редактировалось GenbI4; 11.11.2009 в 02:28.
GenbI4 вне форума Ответить с цитированием
Старый 11.11.2009, 16:23   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

SELECT глав.полеА, справ1.полеБ справ2.полеВ FROM главная таблица JOIN справ1, справ2 ON 1тбл.kod1спр.=1спр.kod1спр. WHERE данные фильтра
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 11.11.2009, 17:07   #3
GenbI4
 
Регистрация: 11.11.2009
Сообщений: 3
По умолчанию

Sweta, Необходимо на выходе получить: все данные первой таблицы + справ1. столбец Б + страв2. столбец Б.

Если
SELECT глав.табл..*, справ1.полеБ, справ2.полеБ FROM главная таблица JOIN справ1, справ2 ON 1тбл.kod1спр.=1спр.kod1спр. WHERE данные фильтра - ошибка
GenbI4 вне форума Ответить с цитированием
Старый 11.11.2009, 17:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sweta, мне кажется, что у Вас неверный вариант - я не вижу где связь между главной таблицей и вторым справочником!!

GenbI4
Access предлагает такой вариант написания:
Код:
SELECT *
FROM (1тб INNER JOIN 1спр ON [1тб].kod1спр = [1спр].kod1спр) INNER JOIN 2спр 
  ON [1тб].kod2спр = [2спр].kod2спр
 WHERE ...Данные фильтра...
а лично мне более понятен и привычен вариант, где связи задаются через WHERE:
Код:
SELECT 1тб.*, 1спр.Название_из_справочника1, 2спр.Название_из_справочника2
FROM 1тб, 1спр, 2спр
WHERE  [1тб].kod1спр = [1спр].kod1спр
and [1тб].kod2спр = [2спр].kod2спр;
 and ...Данные фильтра...

Последний раз редактировалось Serge_Bliznykov; 12.11.2009 в 08:53. Причина: подправил запросы на предмет условий фильтрации...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.11.2009, 13:00   #5
GenbI4
 
Регистрация: 11.11.2009
Сообщений: 3
По умолчанию

Наверно у меня ошибка в фильтре где-то. Ругается на 5 линию, как раз фильтр
Serge_Bliznykov, спасибо
GenbI4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многотабличные запросы Golovastik SQL, базы данных 4 09.11.2009 15:20
обновление в блоге - Работа с MySQL в С++ с использованием библиотеки mysql++ Pblog Обсуждение статей 0 16.08.2009 16:00
DeLphi +Mysql запросы ! Flanker13 БД в Delphi 10 06.04.2009 15:30
Многотабличные запросы! (модификация данных). MSSQL +Delphi MoGiLsHiKK БД в Delphi 1 25.12.2007 16:21