|
автор: новичек (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
тоесть вытаскивать несколько сумм из разных таблиц или надо для каждой суммы писать свой запрос ? | |
|
|
|
|
|
|
|
для: новичек
(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
понятно что я имел ввиду ? | |
|
|
|
|
|
|
|
для: новичек
(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
так что я что то тут мне кажется не дагоняю как правильно прописать :( | |
|
|
|
|
|
|
|
для: новичек
(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'
вот как лучше сделать выборку ? | |
|
|
|
|
|
|
|
для: новичек
(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'
а там где мне надо суммировать хранятся просто цыфры которые надо сумировать и вывести результат этих сумм | |
|
|
|