Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Многотабличный запрос
 
 автор: Ziq   (06.09.2005 в 16:17)   письмо автору
 
 

Помогите, пожалуйста решить вот такую задачу.
Дано:
2 таблицы
ftable - первая таблица (1)
id_ftable - id
id_user - втор ключ
sum - разные числа

stable - вторая таблица (2)
id_user - id
name - имя

Задача
сформировать такой SQL, чтобы он выбрал все name (2) где сумма sum (1) больше 20.

   
 
 автор: codexomega   (06.09.2005 в 16:28)   письмо автору
 
   для: Ziq   (06.09.2005 в 16:17)
 

select name from stable, ftable where stable.id_user=ftable.id_user and ftable.sum > 20;

   
 
 автор: Ziq   (06.09.2005 в 16:59)   письмо автору
 
   для: codexomega   (06.09.2005 в 16:28)
 

Вы не правильно меня поняли в таблице ftable(1) в поле sum много значений. И нужно сделать так, что если их сумма больше 20. т.е. sum(ftable.sum)

   
 
 автор: Ziq   (06.09.2005 в 17:36)   письмо автору
 
   для: Ziq   (06.09.2005 в 16:59)
 

Похоже, что в тот раз объяснил я не очень понятно. Сейчас объясню подробнее.
Задача в следующем. Есть 2 таблицы первая - Очки (ftable), вторая - список пользователей (stable). Нужно сделать такой запрос, чтобы он выбрал весь список пользователей, у которых очков больше нуля, причем, если человек только зарегестрировался, то в таблице с очками нет данных, но он должен быть отображен. Меня хватило только вот на такой запрос но он не решает последнюю проблему (жирный).


SELECT stable.id_user, stable.name
FROM stable, ftable
WHERE stable.id_user = ftable.id_user
GROUP BY ftable.id_user
HAVING sum( ftable.sum) >10

Помогите, пожалуйста.

   
 
 автор: cheops   (06.09.2005 в 18:28)   письмо автору
 
   для: Ziq   (06.09.2005 в 17:36)
 

Вам нужно так называемое "левое объединение" - оно как раз для таких задач и предназначено
SELECT stable.id_user, stable.name 
FROM stable LEFT JOIN ftable 
ON stable.id_user = ftable.id_user 
GROUP BY ftable.id_user 
HAVING sum( ftable.sum) >10

   
 
 автор: Ziq   (06.09.2005 в 19:03)   письмо автору
 
   для: cheops   (06.09.2005 в 18:28)
 

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

   
 
 автор: cheops   (07.09.2005 в 02:07)   письмо автору
 
   для: Ziq   (06.09.2005 в 19:03)
 

/*Задумчиво оглядывая полку*/ Осенью выходит наша совместная с Кузнецовым М.В. книга по MySQL 5, анонс можно почитать в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=6148, но её следует ждать.
Вообще, своё знакомство с MySQL я начал с турториала официального мануала (3 глава), русский вариант которого можно свободно загрузить с официального сайта dev.mysql.com - изумительный турториал для начинающих, одно из немногих хороших мест в официальном мануале. Более глубоко с SQL я познакомился по книге SQL Дж. Гроффа, П. Вайнберг - очень важно следить именно за стандартом SQL, так как СУБД зачастую неполностью его реализуют и потом возможности сыпятся на пользователей как снег на голову (документация как всегда отстаёт) - именно такая ситуация складывается с MySQL 4.1 и MySQL 5.0 - в официальном мануале о новых возможностях практически ничего не говорится - без знания стандарта SQL, читать мануал часто невозможно, то что требует 50 страниц, описывается на трёх. SQL Дж. Гроффа, П. Вайнберг очень советую (хотя она слегка устарела), в моей библиотеке (около 200 книг) - это одна из лучших, выдержана в изумительном техническом стиле, очень последовательная и понятная - увидите - берите за любые деньги - это ключ вообще ко всем базам данных, в том числе и к MySQL. Кроме того по MySQL сейчас имеется две замечательные книги Поля Дюбуа (к сожалению описывается только 4 версия) и две книги издательства MySQL, являющихся переводом официального мануала, со всеми его недостатками (т.е. иногда просто не понятно что имеется ввиду - сочувствую переводчикам).

   
 
 автор: Ziq   (07.09.2005 в 07:18)   письмо автору
 
   для: cheops   (07.09.2005 в 02:07)
 

Посмотрел я в электронных магазинах (Ozon & Bolero) нету там, а в наших магазинах вряд ли она есть, но я не смотрел. А как она выглядит? Вы сказали, что книга выйдет осенью, это когда? Потому, что уже осень. Какие еще книге можно почитать?

   
 
 автор: cheops   (07.09.2005 в 13:44)   письмо автору
 
   для: Ziq   (07.09.2005 в 07:18)
 

Нет, книга выйдет поздней осенью, может даже в декабре... Ещё можно почитать книгу Поля Дюбуа "MySQL", а также перевод мануала "MySQL. Справочник по языку" - так везде пока используется MySQL 4.0 - это будет хорошим решением.

   
 
 автор: Ziq   (07.09.2005 в 07:20)   письмо автору
 
   для: cheops   (06.09.2005 в 18:28)
 

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования