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

Форум MySQL

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

 

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

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

тема: Двухтабличный запрос с группировкой по сумме одного из столбцов
 
 автор: Лена Смирнова   (13.09.2009 в 16:49)   письмо автору
 
 

Подскажите, как такое сделать?
есть 2 таблицы:

Первая

id | login | pass | email
1 | Vasy | 123123| vasya@mail.ru
2 | Nina | 123321| Nina@mail.ru


Вторая

part_id | |num | balans
2 | 79213211212 | 15.17
2 | 85673222222 | 2.92
2 | 76593465864 | 95.85
1 | 34765987662 | 5.5
1 | 98364561023 | 1.2


Как мне вывести так:
Vasya 113.94
Nina 6.7

Как вы поняли, цифры в сумме, и у кого больше тот выше, в убывательном порядке тоесть.

  Ответить  
 
 автор: cheops   (13.09.2009 в 17:05)   письмо автору
 
   для: Лена Смирнова   (13.09.2009 в 16:49)
 

Можно воспользоваться следующим запросом
SELECT user.login AS login,
       SUM(balans.balans) AS balans
FROM user, balans
WHERE user.id = balans.part_id
GROUP BY balans.part_id

Здесь user - первая таблица, а balans - вторая.

  Ответить  
 
 автор: Trianon   (13.09.2009 в 17:08)   письмо автору
 
   для: cheops   (13.09.2009 в 17:05)
 

ORDER BY balans DESC

  Ответить  
 
 автор: cheops   (13.09.2009 в 17:15)   письмо автору
 
   для: Trianon   (13.09.2009 в 17:08)
 

Да, согласен с дополнением, если нужна сортировка, то конструкцию ORDER BY нужно поместить после конструкции GROUP BY
SELECT user.login AS login, 
       SUM(balans.balans) AS balans 
FROM user, balans 
WHERE user.id = balans.part_id 
GROUP BY balans.part_id
ORDER BY balans DESC

  Ответить  
 
 автор: #@@#   (13.09.2009 в 17:39)
 
   для: cheops   (13.09.2009 в 17:15)
 

user.login AS login писать не над0, пр0ст0 user.login
user, balans лучше заменить на LEFT JOIN, если нужн0 выв0дить юзер0в в т0м числе и с нулевым баланс0м

И постепенно в усыпленье
И чувств и дум впадает он,
А перед ним Воображенье
Свой пестрый мечет фараон.
То видит он: на талом снеге,
Как-будто спящий на ночлеге,
Недвижим юноша лежит,
И слышит голос: что ж? убит.
То видит он врагов забвенных,
Клеветников, и трусов злых,
И рой изменниц молодых,
И круг товарищей презренных,
То сельский дом -- и у окна
Сидит она... и всё она!

  Ответить  
 
 автор: Лена Смирнова   (13.09.2009 в 21:01)   письмо автору
 
   для: cheops   (13.09.2009 в 17:15)
 

Если не трудно расскажите по порядку, что тут происходит... что-бы понять

  Ответить  
 
 автор: cheops   (13.09.2009 в 21:17)   письмо автору
 
   для: Лена Смирнова   (13.09.2009 в 21:01)
 

Есть ли у вас пользователи для которых нет ни одной записи в таблице баланса? Если они есть, важен ли их вывод или выводим только тех, у кого баланс больше нуля? Если важно выводить всех, запятую между таблицами в FROM-конструкции следует заменить на ключевое слово LEFT JOIN. ORDER BY - это сортировка, если она важна, нужно использовать это ключевое слово.

  Ответить  
 
 автор: Лена Смирнова   (13.09.2009 в 21:59)   письмо автору
 
   для: cheops   (13.09.2009 в 21:17)
 

Нет, мне не нужно выводить с нолевым балансом...
Я не могу понять, где там название таблиц

  Ответить  
 
 автор: cheops   (13.09.2009 в 22:10)   письмо автору
 
   для: Лена Смирнова   (13.09.2009 в 21:59)
 

Тогда можно воспользоваться запросом
SELECT user.login AS login, 
       SUM(balans.balans) AS balans 
FROM user, balans 
WHERE user.id = balans.part_id 
GROUP BY balans.part_id

Здесь используются сразу две таблицы в конструкции FROM, user - это первая таблица, а balans - это вторая таблица. В расширенных записях вида user.id сначала идет имя таблицы, а потом имя столбца этой таблицы.

  Ответить  
 
 автор: Лена Смирнова   (13.09.2009 в 23:02)   письмо автору
 
   для: cheops   (13.09.2009 в 22:10)
 

Теперь все понятно... спасибо за помощь и разъяснения!

  Ответить  
 
 автор: Лена Смирнова   (14.09.2009 в 13:19)   письмо автору
 
   для: Лена Смирнова   (13.09.2009 в 23:02)
 

Вопрос решен :)

  Ответить  
Rambler's Top100
вверх

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