Re: [PHP-DB] multiple tables and amounts

2004-01-29 Thread ma
thx for the query!

unfortunately it does not what i was aiming for... a result like this:

id | img | comments | ratings
---+-+--+
1  | p.jpg   | 0| 1
2  | a.jpg   | 3| 4
3  | v.png   | 2| 0

so the variable to set dynamicall should be compared to gid (id from the
gallery-table).

i found that the problem with two joins is, that the group-by-methods get
applyed to all rows, so i cannot differ the amount of comments and ratings.
the only possibility is to find it out via php, but this is not what i'm
aiming for.. 

thanks for your answer!

-mathew 

# life would be easier if i knew the source code...

> Von: "Robert Sossomon" <[EMAIL PROTECTED]>
> Organisation: Garland C Norris Company
> Antworten an: <[EMAIL PROTECTED]>
> Datum: Thu, 29 Jan 2004 11:17:55 -0500
> An: <[EMAIL PROTECTED]>, "'PHP-DB'" <[EMAIL PROTECTED]>
> Betreff: RE: [PHP-DB] multiple tables and amounts
> 
> // This is just 1 query, I have not tested it, but it may work.
> 
> $get_Quote = "select ph.id, ph.img, cm.id, cm.phid, cm.txt, rt.id,
> rt.phid, rt.text from photos as ph left join comments as cm left join
> ratings as rt on ph.id = cm.phid = rt.phid where id = '$photo_id' order
> by ph.id";
> 
> //runs the query
> $get_Quote_res = mysql_query($get_Quote) or die(mysql_error());
> 
> 
> 
> 
> -Original Message-
> From: ma [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, January 28, 2004 10:21 PM
> To: PHP-DB
> Subject: [PHP-DB] multiple tables and amounts
> 
> 
> hi!
> 
> i have a weired problem:
> 
> there are 3 tables:
> photos (id, img)
> comments (id, phid, text)
> ratings (id, phid, text)
> 
> now i tried to create a query returning the amount of ratings and the
> amount of comments for all images in the photo-table.
> 
> i tried it with multiple joins, but without success...
> but i ended up using some CREATE TEMPORARY TABLE syntax - is there a way
> to do it one-query?
> 
> CREATE TEMPORARY TABLE comments_temp
> SELECT comments.id, comments.phid,
> COUNT(comments.id) AS ratings
> FROM comments
> LEFT JOIN ratings ON ratings.phid=comments.phid
> WHERE comments.phid=1
> GROUP BY comments.phid,
> comments.id;
> 
> SELECT photos.*,
> COUNT(photos.id) AS comments,
> comments_temp.ratings
> FROM photos
> LEFT JOIN comments_temp ON comments_temp.phid = photos.id
> WHERE gid=1
> GROUP BY photos.id;
> 
> DROP TABLE comments_temp;
> 
> as said i would like to do it one-query, because it does not seem to me
> being a simple and beautiful solution??
> 
> help would be warmly appretiated... thx alot
> - mathew
> 
> # life would be easier if i knew the source code...
> 
> -- 
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> -- 
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP-DB] multiple tables and amounts

2004-01-29 Thread Robert Sossomon
// This is just 1 query, I have not tested it, but it may work.

$get_Quote = "select ph.id, ph.img, cm.id, cm.phid, cm.txt, rt.id,
rt.phid, rt.text from photos as ph left join comments as cm left join
ratings as rt on ph.id = cm.phid = rt.phid where id = '$photo_id' order
by ph.id";

//runs the query
$get_Quote_res = mysql_query($get_Quote) or die(mysql_error());




-Original Message-
From: ma [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, January 28, 2004 10:21 PM
To: PHP-DB
Subject: [PHP-DB] multiple tables and amounts


hi!

i have a weired problem:

there are 3 tables:
photos (id, img)
comments (id, phid, text)
ratings (id, phid, text)

now i tried to create a query returning the amount of ratings and the
amount of comments for all images in the photo-table.

i tried it with multiple joins, but without success...
but i ended up using some CREATE TEMPORARY TABLE syntax - is there a way
to do it one-query?

CREATE TEMPORARY TABLE comments_temp
SELECT comments.id, comments.phid,
COUNT(comments.id) AS ratings
FROM comments
LEFT JOIN ratings ON ratings.phid=comments.phid
WHERE comments.phid=1
GROUP BY comments.phid,
comments.id;

SELECT photos.*,
COUNT(photos.id) AS comments,
comments_temp.ratings
FROM photos
LEFT JOIN comments_temp ON comments_temp.phid = photos.id
WHERE gid=1
GROUP BY photos.id;

DROP TABLE comments_temp;

as said i would like to do it one-query, because it does not seem to me
being a simple and beautiful solution??

help would be warmly appretiated... thx alot
- mathew

# life would be easier if i knew the source code...

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] multiple tables and amounts

2004-01-29 Thread ma
hi!

yes - it seems as if there was no way out. i'll have to render it without
this php-class. i didn't thought that it's not possible to do such queries
in sql - well at least i don't know how to do them?? :/

thx for your answers!

-mathew 

# life would be easier if i knew the source code...

> Von: "Robert Sossomon" <[EMAIL PROTECTED]>
> Organisation: Garland C Norris Company
> Antworten an: <[EMAIL PROTECTED]>
> Datum: Thu, 29 Jan 2004 11:10:04 -0500
> An: <[EMAIL PROTECTED]>
> Betreff: RE: [PHP-DB] multiple tables and amounts
> 
> I may be able to hack the XML code to do it, but with wanting a COUNT of
> each based on the ID, it is going to be difficult to do it in 1 query
> only, in my opinion at least... Is there a way to out-think the XML
> generation to grab the items you need?
> 
> 
> 
> -Original Message-
> From: ma [mailto:[EMAIL PROTECTED]
> Sent: Thursday, January 29, 2004 10:40 AM
> To: PHP-DB
> Subject: Re: [PHP-DB] multiple tables and amounts
> 
> 
> hi!
> 
> thanks a lot for your answer. i also thought of dividing the problem
> into several selects, but the application i'm working with (it's
> designed by a friend of mine, which lets you easily generate XML out of
> an sql) only accepts one single query..
> 
> do you know about any problems using CREATE TEMPORARY TABLE - eg. when
> there are a lot of users accessing the page?
> 
> thx for your help again!
> 
> -mathew
> 
> 
> # die welt ist schnell geworden...
> 
>> Von: "Hutchins, Richard" <[EMAIL PROTECTED]> Antworten
>> an: [EMAIL PROTECTED]
>> Datum: Thu, 29 Jan 2004 08:25:03 -0500
>> An: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
>> Betreff: RE: [PHP-DB] multiple tables and amounts
>> 
>> Matt,
>> 
>> What about this (assuming MySQL):
>> 
>> //$photoid is whatever photo you want the details for.
>> $sql_a = "SELECT id FROM comments WHERE phid = '".$photoid."'"; $sql_b
> 
>> = "SELECT id FROM ratings WHERE phid = '".$photoid."'";
>> 
>> $result_a = mysql_query($sql_a) or
>> die(mysql_error());
>> $num_comments = mysql_num_rows($result_a);
>> 
>> $result_b = mysql_query($sql_b) or
>> die(mysql_error());
>> $num_ratings = mysql_num_rows($result_b);
>> 
>> echo "There were ".$num_comments." comments and ".$num_ratings." for
>> that photo.";
>> 
>> Since you're not doing anything really difficult with the queries, you
> 
>> probably won't see much of a speed hit by doing back-to-back queries
>> like this. Besides, I think doing two straight queries like this is
>> going to be faster than creating and deleting temporary tables. Just a
> 
>> guess.
> 
> -- 
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DB] multiple tables and amounts

2004-01-29 Thread ma
hi!

thanks a lot for your answer. i also thought of dividing the problem into
several selects, but the application i'm working with (it's designed by a
friend of mine, which lets you easily generate XML out of an sql) only
accepts one single query..

do you know about any problems using CREATE TEMPORARY TABLE - eg. when there
are a lot of users accessing the page?

thx for your help again!

-mathew


# die welt ist schnell geworden...

> Von: "Hutchins, Richard" <[EMAIL PROTECTED]>
> Antworten an: [EMAIL PROTECTED]
> Datum: Thu, 29 Jan 2004 08:25:03 -0500
> An: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
> Betreff: RE: [PHP-DB] multiple tables and amounts
> 
> Matt,
> 
> What about this (assuming MySQL):
> 
> //$photoid is whatever photo you want the details for.
> $sql_a = "SELECT id FROM comments WHERE phid = '".$photoid."'";
> $sql_b = "SELECT id FROM ratings WHERE phid = '".$photoid."'";
> 
> $result_a = mysql_query($sql_a) or
> die(mysql_error());
> $num_comments = mysql_num_rows($result_a);
> 
> $result_b = mysql_query($sql_b) or
> die(mysql_error());
> $num_ratings = mysql_num_rows($result_b);
> 
> echo "There were ".$num_comments." comments and ".$num_ratings." for that
> photo.";
> 
> Since you're not doing anything really difficult with the queries, you
> probably won't see much of a speed hit by doing back-to-back queries like
> this. Besides, I think doing two straight queries like this is going to be
> faster than creating and deleting temporary tables. Just a guess.

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php