Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование where и inner join в запросах, select where inner join 
V
    Опции темы
pythonwin
Дата 24.4.2007, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



добрый день!

пожалуйста подскажите - как использовать where в запросе где используются "внутрение" таблицы

например
Код

SELECT DISTINCT
table1.id, table1.name, table1.q1,
table3.id, table3.name, table3.rnn
FROM table1 where table1.id = 1
INNER JOIN table2 ON table1.id_table2 = table2.id
INNER JOIN table3 ON table3.id = table2.id_table3


этот запрос дает ошибку :(

а использовать следующий запрос как я отнимаю менее эффективно

Код

SELECT DISTINCT
table1.id, table1.name, table1.q1,
table3.id, table3.name, table3.rnn
INNER JOIN table2 ON (table1.id_table2 = table2.id) and (table1.id = 1)
INNER JOIN table3 ON table3.id = table2.id_table3

PM WWW GTalk Jabber   Вверх
boevik
Дата 24.4.2007, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Правильнее записать запрос в таком виде:
Код

SELECT DISTINCT
table1.id, table1.name, table1.q1,
table3.id, table3.name, table3.rnn
FROM table1
INNER JOIN table2 ON table1.id_table2 = table2.id
INNER JOIN table3 ON table3.id = table2.id_table3
WHERE table1.id = 1




--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
pythonwin
Дата 24.4.2007, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



boevik, спасибо за пример smile
а указывание where в конце запроса не будет означать что это проверка будет в самом внутри трех запросов?
что-то вроде
Код

for (i=1;1>100;1++) {
    for (j=1;1>100;j++) {
        for (q=1;1>100;q++) {
            if (i==1){
                writeln(i)
            }
        }
    }
}

PM WWW GTalk Jabber   Вверх
Akina
Дата 24.4.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



pythonwin, напиши так:

Код

SELECT DISTINCT table1.id, table1.name, table1.q1, table3.id, table3.name, table3.rnn
FROM 
(
( 
table1
  INNER JOIN table2 
    ON table1.id_table2 = table2.id
)
  INNER JOIN table3 
    ON table3.id = table2.id_table3
)
WHERE table1.id = 1


Стало понятнее?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
pythonwin
Дата 24.4.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



Akina, boevik, cпасибо за помощь smile
PM WWW GTalk Jabber   Вверх
boevik
Дата 24.4.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Цитата(pythonwin @  24.4.2007,  09:04 Найти цитируемый пост)
а указывание where в конце запроса не будет означать что это проверка будет в самом внутри трех запросов

SQLServer сам разберетсq когда ему лучше производить прoверку. Если очень интересует как в твоём случае проиxодит, то надо смотреть план выполнения.



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.