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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2012, 11:46   #1
malya
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 16
Вопрос Запрос

Доброго дня)
подскажите пожалуйста
отправка электронных писем
есть таблица
контакты(id_контакт, фио) значения например(1 Иванов; 2 Сидоров)
письмо(id_письмо, id_контакт_отправитель, id_контакт_получатель) значения (1 1 2)
проблема в написании запроса. как вывести таблицу письмо с подставленными значениями из таблицы контакты(1 Иванов Сидоров)?
malya вне форума Ответить с цитированием
Старый 04.03.2012, 12:00   #2
malya
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 16
По умолчанию

делаю так:
SELECT(id_picmo, name, name)
FROM picmo, kontact
WHERE picmo.otpravitel=kontact.id_kontact and picmo.poluchatel=kontact.id_kontact

не знаю как правильно...

Последний раз редактировалось malya; 04.03.2012 в 12:16.
malya вне форума Ответить с цитированием
Старый 04.03.2012, 13:10   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT P.id_picmo,K1.фио AS фиоОтпр,K2.фио AS фиоПолуч
  FROM picmo P
    LEFT JOIN kontact K1 ON K1.id_контакт=P.id_контакт_отправитель
    LEFT JOIN kontact K2 ON K2.id_контакт=P.id_контакт_получатель
или
Код:
SELECT P.id_picmo,
    (SELECT K.фио FROM kontact K WHERE K.id_контакт=P.id_контакт_отправитель) AS фиоОтпр,
    (SELECT K.фио FROM kontact K WHERE K.id_контакт=P.id_контакт_получатель) AS фиоПолуч
  FROM picmo P
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.03.2012, 13:32   #4
malya
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 16
По умолчанию

Огромное спасибо!!!! работает))
скажите, а это называет объединения запросов?
malya вне форума Ответить с цитированием
Старый 04.03.2012, 13:53   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Во втором случае вложенные запросы используютя, в первом просто связка по LEFT JOIN. К объединению запросов больше имеет отношение UNION
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.03.2012, 15:15   #6
malya
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 16
По умолчанию

возник еще вопрос
а если например два получателя письма указываются
как вывести что бы не было дублирования отправителя
то есть:
письмо №.|Отправитель.|Получатель
1.............|Иванов........|Сидор ов, Петров

Последний раз редактировалось malya; 04.03.2012 в 15:18.
malya вне форума Ответить с цитированием
Старый 04.03.2012, 16:17   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

SQL для таких целей не очень то предназначен. А если 3 получателя, или 23? Сделать конечно можно, но сильно зависит от возможностей СУБД
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.03.2012 в 16:23.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос на выборку и отчет на этот запрос Camelot_2012 Microsoft Office Access 2 21.12.2011 16:48
запрос к БД lebrosha SQL, базы данных 1 18.06.2010 13:41
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50