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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 08:50   #1
Stormik
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию Двойное левое соединение или псевдонимы

Имеется таблица заявок `zayav`. В ней есть 2 поля "Принял" и "Выполнил", связанные с одной таблицей `masters`. Естественно, это могут быть разные люди.

zayav
------------------------------
id prin vyp
1 1 2


masters
------------------------
id name
1 Иванов
2 Петров

Как сделать левое соединение, чтобы получить 2 различных значения?
Думаю, что такой запрос:
Код:
$q_zayavka = "
SELECT * FROM `zayav` 
LEFT JOIN (`masters`) 
ON (masters.id = zayav.prin AND masters.id = zayav.vyp) 
WHERE `holding` = '$userholding'";
будет не совсем корректен.

Последний раз редактировалось Stilet; 27.11.2012 в 09:13.
Stormik вне форума Ответить с цитированием
Старый 27.11.2012, 09:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
чтобы получить 2 различных значения?
В каком смысле? Нужно отобрать разных заказчиков и подрядчиков?
Если да то:
Код:
SELECT * FROM `zayav` 
LEFT JOIN `masters` m ON (m.id = zayav.prin)
LEFT JOIN `masters` m2 ON (m2.id = zayav.vyp) 
WHERE `holding` = '$userholding'" and prin<>vyp;
I'm learning to live...

Последний раз редактировалось Stilet; 27.11.2012 в 09:17.
Stilet вне форума Ответить с цитированием
Старый 27.11.2012, 09:43   #3
Stormik
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию

Не совсем. Заказчик может отправить заявку не тому мастеру. Например, не работает касса. Заявку отправляют в техотдел Иванову. Иванов перенаправляет заявку в IT отдел Петрову.
В выводимой строке должна выводиться эта цепочка.
Т.е. в выводимой в таблицу значений должна быть строка вида:
Дата_заявки Кто_передал Кто_принял Содержание_заявки Кто_выполнил Что_сделано

При этом Кто_принял и Кто_выполнил - это содрудники подрядной организации из таблицы `masters`
Stormik вне форума Ответить с цитированием
Старый 27.11.2012, 09:50   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Не совсем.
А что не совсем? Согласно вашей структуры именно так, как Stilet предложил.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.11.2012, 10:06   #5
Stormik
 
Регистрация: 27.11.2012
Сообщений: 8
По умолчанию

Т.е. m и m2 - это и есть псевдонимы?
А выводить их как?
Код:
$row_zayavka['m.name']
$row_zayavka['m2.name']
У меня пустые значения выводит...
Stormik вне форума Ответить с цитированием
Старый 27.11.2012, 10:36   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Например так
SELECT zayav.*,m.name as prinname,m2.name as vypname
и выводите по именам prinname и vypname
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двойное обращение к полю X@OC SQL, базы данных 4 24.06.2012 14:46
левое меню с изображениями Krote HTML и CSS 2 04.03.2012 22:32
Двойное срабатывание FileSystemWatcher ShamanK C# (си шарп) 1 06.11.2011 19:32
Двойное условие tema654 Microsoft Office Access 5 30.10.2011 00:30
Двойное подчёркивание Nerr Компоненты Delphi 3 14.08.2011 00:28