Jump to content

[SOLVED] JOIN WHERE


rarebit

Recommended Posts

Hi,

Heres my current query:

$s = "SELECT title, ".$tnT.".id, blurb, COUNT(topic_id) as num    
FROM ".$tnT." 
LEFT JOIN ".$tnW." ON ".$tnW.".topic_id = ".$tnT.".id
GROUP BY ".$tnT.".id
ORDER BY weight";

However I only want to count the 'topic_id' where it's 'last' property is above a certain time, e.g. 'WHERE last > 0', i've tried a few ways but all to no avail...

$s = "SELECT title, ".$tnT.".id, blurb, COUNT(topic_id WHERE last > 0) as num
FROM ".$tnT." 
LEFT JOIN ".$tnW." ON ".$tnW.".topic_id = ".$tnT.".id
GROUP BY ".$tnT.".id
ORDER BY weight";

and...

$s = "SELECT title, ".$tnT.".id, blurb, COUNT(topic_id) as num    
FROM ".$tnT." 
{ LEFT JOIN ".$tnW." ON ".$tnW.".topic_id = ".$tnT.".id WHERE ".$tnW.".last >= 0 }
GROUP BY ".$tnT.".id
ORDER BY weight";

and...

$s = "SELECT title, ".$tnT.".id, blurb, COUNT(topic_id) as num    
FROM ".$tnT." 
LEFT JOIN ".$tnW." ON ".$tnW.".topic_id = ".$tnT.".id
WHERE ".$tnW.".last >= ".($time-30)."
GROUP BY ".$tnT.".id
ORDER BY weight";

(this last one sort of does it, but doesn't return one's without a valid 'last', therefore I changed:

WHERE ".$tnW.".last >= ".($time-30)." || ".$tnT.".id > 0

but that invalidates the 'last' bit...

 

Any suggestions on how to do a selective join please?

Link to comment
https://forums.phpfreaks.com/topic/129414-solved-join-where/
Share on other sites

try

$s = "SELECT title, $tnT.id, blurb, COUNT(topic_id) as num   
        FROM $tnT
        LEFT JOIN $tnW ON $tnW.topic_id = $tnT.id
            AND $tnW.last >= ($time-30)
        GROUP BY $tnT.id
        ORDER BY weight";

Link to comment
https://forums.phpfreaks.com/topic/129414-solved-join-where/#findComment-671124
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.