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

Форум MySQL

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

 

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

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

тема: Запрос на несколько таблиц
 
 автор: новичек   (01.10.2005 в 22:53)
 
 

здравствуйте.
хочу одним запросом вытащить данные из нескольких таблиц. написал вот что

<?
$res
=mysql_query("select m.earn, m.refearn, sum(p.pey) as amt
                  from monyuser m, pay p
                  where m.muser='
$users' and p.user='$users'
                  group by 
$users order by amt desc");
$rsum=mysql_fetch_array($res);
?>

не хочет работать, выдает
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

в чем проблема ?

и еще до кучи сюда же.
можно ли в этот запрос вставить еще что бы вытащило сумму из другой таблицы, то есть вот такое к примеру
sum(r.ruser) для таблицы refuser

тоесть вытаскивать несколько сумм из разных таблиц или надо для каждой суммы писать свой запрос ?

   
 
 автор: cheops   (01.10.2005 в 23:29)   письмо автору
 
   для: новичек   (01.10.2005 в 22:53)
 

Перепишите ваш код следующим образом
<? 
  $query 
"select m.earn, m.refearn, sum(p.pey) as amt 
                  from monyuser m, pay p 
                  where m.muser='
$users' and p.user='$users
                  group by 
$users order by amt desc";
  
$res mysql_query($query); 
  if(!
$res) exit(mysql_error());
  
$rsum mysql_fetch_array($res); 
?>

Проверку
<?php
  
if(!$res)
  {
    echo 
$query."<br>";
    exit(
mysql_error());
  }
?>

лучше делать всегда - так как в синтаксисе SQL-запроса ошибиться очень просто - mysql_error() поможет узнать в чём дело. Что выводится в окно браузера?

>и еще до кучи сюда же.
Не очень понятно что имеется ввиду, у нас же нет перед глазами структуры таблиц...

   
 
 автор: новичек   (01.10.2005 в 23:43)
 
   для: cheops   (01.10.2005 в 23:29)
 

ок.
сейчас попробую так прописать.

а насчет того что не понятно что я еще спросил. попробую обьяснить.

к примеру есть 3 таблицы.
в одной по полу summa указана какая то сумма потраченая пользователем.
к примеру
один раз 50, второй раз 100, третий раз 20
в другой по полю tovar указано сколько этот пользователь заказывал товара за один раз в единицах, ну к примеру
один раз 4, второй раз 6, третий раз 2

можно ли одним запросом из этих 2 таблиц вытащить сразу эти две суммы, то есть должно вывестись 2 результата
170 и 12

понятно что я имел ввиду ?

   
 
 автор: cheops   (01.10.2005 в 23:50)   письмо автору
 
   для: новичек   (01.10.2005 в 23:43)
 

По какому полю идентифицируется пользователь?

   
 
 автор: новичек   (02.10.2005 в 00:17)
 
   для: cheops   (01.10.2005 в 23:50)
 

в общем с этим разобрался, я не правильно идентифицировал пользователя.
но попробовал добавить еще сумму, вот так

<?
$query 
"select m.earn, m.refearn, sum(p.pey) as amt, sum(b.cena) as cmt 
                  from monyuser m, pay p , userbue b
                  where m.muser='
$users' and p.user='$users'  and b.uname='$users'
                  group by p.user"

  
$res mysql_query($query); 
  if(!
$res) exit(mysql_error()); 
  
$rsum mysql_fetch_array($res);
?>

ошибок никаких не выдает, все работает, но значения

$rsum['amt']
$rsum['cmt']

выводит в 2 раза больше чем они есть на самом деле.
$rsum['amt'] должно быть 25 а выводит 50
$rsum['cmt'] должно быть 15 а выводит 30

так что я что то тут мне кажется не дагоняю как правильно прописать :(

   
 
 автор: cheops   (02.10.2005 в 01:09)   письмо автору
 
   для: новичек   (02.10.2005 в 00:17)
 

А точно группировка должна проводится по p.user - "group by p.user", а не по полю другой таблицы?

   
 
 автор: новичек   (02.10.2005 в 02:09)
 
   для: cheops   (02.10.2005 в 01:09)
 

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

m.muser='$users' and p.user='$users' and b.uname='$users'

вот как лучше сделать выборку ?

   
 
 автор: cheops   (02.10.2005 в 13:55)   письмо автору
 
   для: новичек   (02.10.2005 в 02:09)
 

Так а что в таблицах-то хранится? Без структуры таблиц и их описания ничего сказать нельзя...

   
 
 автор: новичек   (02.10.2005 в 15:37)
 
   для: cheops   (02.10.2005 в 13:55)
 

тут хранится логин пользователя
m.muser='$users' and p.user='$users' and b.uname='$users'

а там где мне надо суммировать хранятся просто цыфры которые надо сумировать и вывести результат этих сумм

   
Rambler's Top100
вверх

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