Forum Webscript.Ru

Общие => Базы данных => Тема начата: Skif от 02 Апреля 2004, 16:21:01

Название: join или как правильно написать запрос?
Отправлено: Skif от 02 Апреля 2004, 16:21:01
Имеется  таблица:
SELECT * from _table_name_1_
+------------+-----------------+------------+------------+
| user_login | user_permission | user_state | user_limit |
+------------+-----------------+------------+------------+
| skif        | admin           | unlock     | 0          |
| daniman    | user            | unlock     | 165000000  |
| teleport   | user            | unlock     | 0          |
| manager    | user            | unlock     | 28000000   |

такого содержания.
так же имеется другая таблица, куда слаживаются логи прокси-сервера. там необходимо сделать выборку по одному столбцу size, в котором храниться размер скачаных данных. Этот запрос пишеться элементарно

SELECT SUM(size) from _table_name_2_ where ident=\'pupkin\';

Мне нужно что бы был сумарный вывод, не только имя пользователя, права, его нынешнее  состояние (залочен/нет) и лимит, а еще и сколько он "съел", что  можно вычислить из второй таблицы суммированием столбца sum с именем пользователя из первой таблицы, добытое первым запросом.
Вот никак не могу придумать как такой запрос написать, или не тем пользуюсь?
Название: join или как правильно написать запрос?
Отправлено: Макс от 02 Апреля 2004, 19:43:33
Примерно так SELECT * , SUM(tab2.size) from _table_name_1_ as tab1
LEFT JOIN _table_name_2_ as tab2 ON tab1.user_login = tab2.ident
GROUP BY tab2.ident


а вообще в каждой нормальной книге по СУБД join-ам достаточно много внимания уделяют. Читай.

ЗЫ
пример под mysql писал (впредь укзывай какую СУБД используешь)
Название: join или как правильно написать запрос?
Отправлено: Skif от 05 Апреля 2004, 14:32:24
Спасибо огромное, к сожалению я не нашел хорошего описания по MySQL(писал на нем) этого типа запросов. Может посоветуешь и литературу?
Название: join или как правильно написать запрос?
Отправлено: Макс от 05 Апреля 2004, 16:03:01
при изучении баз стоит выделить 3 вещи:
 - изучение стандарта SQL (в сети куча литературы, я не помню что я читал)
 - изучение диалекта SQL для конкретной СУБД (в твоем случае mysql). Ту просто мануал читать надо. Он на русский переведен (http://mysql.com/doc/ru/). Еще много хороших отзывов о книге
Поль Дюбуа "MySQL" (первое издание AFAIK устарело, вроде второе сейчас издается)
 - изучуние теории по проектированию баз данных. Самое популярная здесь книга
Крис Дейт "Введение в системы баз данных" (последнее издание - седьмое)