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

Форум MySQL

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

 

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

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

тема: Объединить два SQL запроса
 
 автор: pavluxa09   (10.10.2011 в 10:02)   письмо автору
 
 

Здравствуйте. У меня имеется два запроса:

SELECT XUsers.ID, XUsers.login, XUsers.joinDate, XUsers.authDate FROM `XUsers` WHERE XUsers.partnerID = 67  - Выборка из таблицы пользователей всех пользователей, которых привел пользователь с ID67.

SELECT SUM(`amount`) FROM  `XUsersTrans` WHERE `userID` = 67 AND  `description` LIKE  '%Парнерские начисления с реферала ID#66%'  - в истории  транзакций посчитать партнерские начисления с выбранного пользователя.


На PDO решение этой проблемы выглядит так:

$sqlResult = DB()->query( 'SELECT * FROM `XUsers` WHERE `partnerID` = '.XUsers::getThisUserID().' ORDER By `ID` DESC' )->fetchAll( PDO::FETCH_ASSOC );
for( $i = 0; $i < count( $sqlResult ); $i++ ) {
    $sqlResult[$i]['earnings'] = DB()->query( 'SELECT SUM(`amount`) FROM  `XUsersTrans` WHERE `userID` = '.XUsers::getThisUserID().' AND  `description` LIKE  \'%Парнерские начисления с реферала ID#'.$sqlResult[$i]['ID'].'%\'' )->fetchColumn();
}


Но в моем варианте получается вложенный запрос, я уверен что это можно объеденить в один. Пожалуйста, помогите

  Ответить  
 
 автор: cheops   (10.10.2011 в 12:08)   письмо автору
 
   для: pavluxa09   (10.10.2011 в 10:02)
 

А второй запрос сколько записей возвращает? Одну?

  Ответить  
 
 автор: pavluxa09   (10.10.2011 в 16:51)   письмо автору
 
   для: cheops   (10.10.2011 в 12:08)
 

Да, он считает сумму полей `amount` нескольких строк по заданному условию

  Ответить  
 
 автор: virtus1k   (18.10.2011 в 13:54)   письмо автору
 
   для: pavluxa09   (10.10.2011 в 10:02)
 

SELECT
  XUsers.ID,
  XUsers.login,
  XUsers.joinDate,
  XUsers.authDate,
  (SELECT SUM(`amount`) 
   FROM `XUsersTrans`
   WHERE
     `userID` = 67 AND
     `description` LIKE '%Парнерские начисления с реферала ID#66%') AS `sum`
FROM `XUsers`
WHERE XUsers.partnerID = 67

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

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