Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Help wanted: convert sql expression from nested selects to inner joins / 3 сообщений из 3, страница 1 из 1
03.11.2004, 14:54
    #32766830
Ilya Evseev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help wanted: convert sql expression from nested selects to inner joins
Есть база статистики прокси-сервера со следующими таблицами:
1) clients: client_id, client_addr
2) servers: server_id, server_addr
3) pages: page_id, page_path, server_id
4) requests: request_id, page_id, timestamp

Имеется запрос на получение списка серверов,
на которые ходил определённый клиент:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select server_addr from servers
where server_id = (
    select server_id from pages
    where request_id = (
        select request_id from requests
        where client_id = $client_id
    )
)
Как записать его с помощью inner join,
чтобы сие чудо работало на MySQL 4.0 ?
...
Рейтинг: 0 / 0
03.11.2004, 17:24
    #32767251
Iryna
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help wanted: convert sql expression from nested selects to inner joins
А вот это не подойдет?
Код: plaintext
1.
2.
3.
4.
5.
select server_addr 
from   servers, pages, requests
where  requests.client_id=$client_id
       and pages.page_id=requests.page_id
       and servers.server_id=pages.server_id
Если для каждого запроса всегда существует соответствующая запись в таблицах страниц и серверов, то этого достаточно.
...
Рейтинг: 0 / 0
04.11.2004, 16:58
    #32769270
Ilya Evseev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help wanted: convert sql expression from nested selects to inner joins
IrynaА вот это не подойдет?
Код: plaintext
1.
2.
3.
4.
5.
select server_addr 
from   servers, pages, requests
where  requests.client_id=$client_id
       and pages.page_id=requests.page_id
       and servers.server_id=pages.server_id
Если для каждого запроса всегда существует соответствующая запись в таблицах страниц и серверов, то этого достаточно.
Тогда уж так:
Код: plaintext
select distinct server_id,server_addr from ...
потому что иначе название сервера будет выводиться для каждой подходящей строки из requests (внешнее объединение?), а мне нужны названия серверов в единственных экземплярах (внутреннее объединение?). Если ошибаюсь с терминологией - не судите строго, я есть чайник.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Help wanted: convert sql expression from nested selects to inner joins / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]