Hello and welcome to our community! Is this your first visit?
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New to the CF scene
    Join Date
    Sep 2009
    Thanked 0 Times in 0 Posts

    problem with 'group by' aspect of sql statement!

    Hi all,

    I'm building a reverse auction style site.

    I have two tables bid table and proposal table.

    I'm trying to print to screen all the proposals made by a particular user!

    $result = mysql_query("SELECT proposal.*, count(bid.proposalid) AS bids,SYSDATE(), TIME_FORMAT(TIMEDIFF(tomorrowtime, SYSDATE()), '%H hours, %i minutes') AS timeleft
    FROM proposal
    LEFT JOIN bid ON proposal.proposalid = bid.proposalid
    WHERE proposal.username = '$username' AND proposal.time > NOW()- INTERVAL 1 DAY
    GROUP BY bid.proposalid");
    The problem is that only those proposals that have bids made on them are printing to screen.

    So for example if four proposals are made by a user, I want all four to be printed, however at the moment the situation is that if only two of them have bids on those two bids are the only two that get printed!

    I'm pretty sure its something to do with the group by statement as when I remove it, it seems to work fine, but I consequently lose the critical "count bids" info.

    Does anyone have any ideas how I can fix this?

    Many Thanks

  2. #2
    UE Antagonizer Fumigator's Avatar
    Join Date
    Dec 2005
    Utah, USA, Northwestern hemisphere, Earth, Solar System, Milky Way Galaxy, Alpha Quadrant
    Thanked 637 Times in 625 Posts
    Try grouping by proposal.proposalid instead of bid.proposalid. I believe grouping by anything in the bid table essentially converts your left join into a normal inner join (and thus excludes proposals with no bids).


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts