|
|
|
| Помогите, пожалуйста решить вот такую задачу.
Дано:
2 таблицы
ftable - первая таблица (1)
id_ftable - id
id_user - втор ключ
sum - разные числа
stable - вторая таблица (2)
id_user - id
name - имя
Задача
сформировать такой SQL, чтобы он выбрал все name (2) где сумма sum (1) больше 20. | |
|
|
|
|
|
|
|
для: Ziq
(06.09.2005 в 16:17)
| | select name from stable, ftable where stable.id_user=ftable.id_user and ftable.sum > 20; | |
|
|
|
|
|
|
|
для: codexomega
(06.09.2005 в 16:28)
| | Вы не правильно меня поняли в таблице ftable(1) в поле sum много значений. И нужно сделать так, что если их сумма больше 20. т.е. sum(ftable.sum) | |
|
|
|
|
|
|
|
для: 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
|
Помогите, пожалуйста. | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 18:28)
| | Вы бы не могли подсказать, по какой книге Вы учили MySQL, что посоветуете. | |
|
|
|
|
|
|
|
для: 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, являющихся переводом официального мануала, со всеми его недостатками (т.е. иногда просто не понятно что имеется ввиду - сочувствую переводчикам). | |
|
|
|
|
|
|
|
для: cheops
(07.09.2005 в 02:07)
| | Посмотрел я в электронных магазинах (Ozon & Bolero) нету там, а в наших магазинах вряд ли она есть, но я не смотрел. А как она выглядит? Вы сказали, что книга выйдет осенью, это когда? Потому, что уже осень. Какие еще книге можно почитать? | |
|
|
|
|
|
|
|
для: Ziq
(07.09.2005 в 07:18)
| | Нет, книга выйдет поздней осенью, может даже в декабре... Ещё можно почитать книгу Поля Дюбуа "MySQL", а также перевод мануала "MySQL. Справочник по языку" - так везде пока используется MySQL 4.0 - это будет хорошим решением. | |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 18:28)
| | Дело в том, что этот запрос тоже не решает второй задачи.
причем, если человек только зарегестрировался, то в таблице с очками нет данных, но он должен быть отображен. | |
|
|
|