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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2009, 20:30   #1
semnily
Новичок
Джуниор
 
Регистрация: 05.04.2009
Сообщений: 2
По умолчанию Поломал голову над SQL запросом из 5-ти таблиц. Возможно ли это?

Всем привет.

Есть 3 основные таблицы: customers, subscribers, contacts.
Также 2 вспомогательные таблицы customers_contacts, subscribers_contacts.

Хочу сделать SQL запрос, типа:

SELECT `contacts`.*, `customers`.`title`, `subscribers`.`title` FROM `contacts`, `customers`, `subscribers` …

Суть запроса — извлечь все контакты для определенного customer'a.
У каждого customer'a можеть быть несколько subscriber'ов.
Contact можеть быть назначен для customer'a (customers_contacts) или же для subscriber'а (subscribers_contacts).

Ответ предполагается такой:

`contacts`.`id`
`contacts`.`title`
`contacts`.`first_name`
`contacts`.`last_name`
`contacts`.`phones`
`contacts`.`emails`
`contacts`.`address`
`contacts`.`department`
`customers`.`title`
`subscribers`.`title` (может быть NULL, если contact присвоен customer'у)

Целый день пробую, ничего не выходит... Может есть кто поопытней в таких делах?
Изображения
Тип файла: png db.png (8.9 Кб, 151 просмотров)
semnily вне форума Ответить с цитированием
Старый 06.04.2009, 12:24   #2
semnily
Новичок
Джуниор
 
Регистрация: 05.04.2009
Сообщений: 2
По умолчанию

Вопрос решился запросом:

SELECT `contacts`.`id` , `contacts`.`first_name` , `contacts`.`last_name` , `contacts`.`phones` , `contacts`.`emails` , `contacts`.`department` , `customers_contacts`. * , `customers`.`title`
FROM `contacts`
INNER JOIN `customers_contacts` ON `customers_contacts`.`contact_id` = `contacts`.`id`
INNER JOIN `customers` ON `customers_contacts`.`customer_id` = `customers`.`id`
WHERE (
`customers`.`id` =1
)
UNION SELECT `contacts`.`id` , `contacts`.`first_name` , `contacts`.`last_name` , `contacts`.`phones` , `contacts`.`emails` , `contacts`.`department` , `subscribers_contacts`. * , `subscribers`.`title`
FROM `contacts`
INNER JOIN `subscribers_contacts` ON `subscribers_contacts`.`contact_id` = `contacts`.`id`
INNER JOIN `subscribers` ON `subscribers_contacts`.`subscriber_ id` = `subscribers`.`id`
WHERE (
`subscribers`.`customer_id` =1
)
semnily вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Blockread с массивом.Возможно ли это? Ozerich Общие вопросы Delphi 4 05.11.2008 17:19
Это возможно? Shaitan63 Общие вопросы Delphi 24 01.05.2008 22:59
Над чем поломать голову ? alexBlack Свободное общение 74 01.02.2008 18:46
Возможно ли это...? jungo Microsoft Office Excel 7 20.11.2007 00:01