Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нужна помощь с запросом  [new]
ivandrova
Member

Откуда:
Сообщений: 17
Всем здрасте, помогите пожалуйста с sql запросом
есть таблица main
| id_main | id_org | id_rab1 | id_rab2 |
| 1 | 1 | 1 | 2 |
| 2 | 2 | 2 | 1 |
| 3 | 1 | 1 | 2 |

еще таблица org
| id_org | name_org |
| 1 | организ1 |
| 2 | организ2 |

и еще таблица rab
| id_rab | name_rab |
| 1 | раб1 |
| 2 | раб2 |

нужна в результате таблица типа
| id_main | name_org | name_rab1 | name_rab2 |
| 1 | организ1 | раб1 | раб2 |
| 2 | организ2 | раб2 | раб1 |
| 3 | организ1 | раб1 | раб2 |
я так понимаю что надо доделать это
SELECT * FROM zayava  JOIN org ON zayava.id_org = org.id_org
но так я получаю только таблицу с организациями, без рабов.:)
Вот.
25 окт 11, 08:38    [11492777]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
ivandrova
...я так понимаю что надо доделать это
SELECT * FROM zayava  JOIN org ON zayava.id_org = org.id_org
но так я получаю только таблицу с организациями, без рабов.:)
Вот.
Ну, а добавить ещё один JOIN для рабов что мешает?
25 окт 11, 08:45    [11492787]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
ivandrova
Member

Откуда:
Сообщений: 17
SELECT * FROM zayava  JOIN org  JOIN rab ON zayava.rab1 = rab.id_rab ON zayava.id_org = org.id_org
вот при таком запросе вылазит ошибка
The multi-part identifier "zayava.rab1" could not be bound.
ps пишу из под делфи, бд на sql server 2005
25 окт 11, 09:08    [11492843]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
ivandrova
Member

Откуда:
Сообщений: 17
ммм табл zayava это табл main
25 окт 11, 09:13    [11492863]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
iljy
Member

Откуда:
Сообщений: 8711
ivandrova,

к каким JOIN относятся ваши ON? Расставьте себе скобки, чтоб понять порядок операций, тогда сразу станет ясно, откуда берется ошибка.
25 окт 11, 09:25    [11492889]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
Sekoka
Member

Откуда:
Сообщений: 73
ivandrova,

попробуй так

SELECT * FROM zayava JOIN rab ON zayava.rab1 = rab.id_rab JOIN org ON zayava.id_org = org.id_org
25 окт 11, 09:27    [11492893]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
ivandrova
Member

Откуда:
Сообщений: 17
Sekoka
ivandrova,

попробуй так

SELECT * FROM zayava JOIN rab ON zayava.rab1 = rab.id_rab JOIN org ON zayava.id_org = org.id_org

ммм спсб, но я так пробовал уже. дело в том что этот запрос возвращает 1 поле rab а у меня их 2. мне нужно что то вроде этого
SELECT * FROM zayava JOIN rab ON zayava.rab1 = rab.id_rab or zayava.rab1 = rab.id_rab JOIN org ON zayava.id_org = org.id_org
25 окт 11, 09:44    [11492948]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
ivandrova
Sekoka
ivandrova,

попробуй так

SELECT * FROM zayava JOIN rab ON zayava.rab1 = rab.id_rab JOIN org ON zayava.id_org = org.id_org

ммм спсб, но я так пробовал уже. дело в том что этот запрос возвращает 1 поле rab а у меня их 2. мне нужно что то вроде этого
SELECT * FROM zayava JOIN rab ON zayava.rab1 = rab.id_rab or zayava.rab1 = rab.id_rab JOIN org ON zayava.id_org = org.id_org
И что не устраивает?
25 окт 11, 09:46    [11492957]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
Sekoka
Member

Откуда:
Сообщений: 73
ivandrova,

JOIN rab ON zayava.rab1 = rab.id_rab or zayava.rab1 = rab.id_rab

По сути это одно и тоже...

Тебе надо вот так
SELECT * FROM zayava JOIN rab ON zayava.rab1 = rab.id_rab JOIN rab as rab_1 ON zayava.rab2 = rab_1.id_rab JOIN org ON zayava.id_org = org.id_org
25 окт 11, 09:49    [11492969]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
ivandrova
Member

Откуда:
Сообщений: 17
SELECT     zayava.id_zayava, zayava.name_zayava, zayava.tel_zayava, zayava.text_zayava, zayava.id_organ, zayava.date_zayava, 
                      zayava.ok_admin_zayava, zayava.ok_user_zayava, zayava.rab1, zayava.rab2, rab.id_rab, rab.name_rab, rab.tel_rab, rab_1.id_rab AS Expr1, 
                      rab_1.name_rab AS Expr2, rab_1.tel_rab AS Expr3, org.id_org, org.name_org
FROM         zayava INNER JOIN
                      rab ON zayava.rab1 = rab.id_rab INNER JOIN
                      rab AS rab_1 ON zayava.rab2 = rab_1.id_rab INNER JOIN
                      org ON zayava.id_organ = org.id_org
Sekoka, спасибо. вот мой конечный вариант
25 окт 11, 10:18    [11493159]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
iljy
Member

Откуда:
Сообщений: 8711
ivandrova,

псевдонимы расставьте и привыкайте их использовать всегда, очень упростите себе жизнь.
25 окт 11, 10:27    [11493220]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом  [new]
ivandrova
Member

Откуда:
Сообщений: 17
iljy
ivandrova,

псевдонимы расставьте и привыкайте их использовать всегда, очень упростите себе жизнь.

учту, спасибо
25 окт 11, 11:12    [11493598]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить