Jump to content

Problem with ON clause in MySQL 5


Debbie-Leigh

Recommended Posts

Hi,

 

My hoster has recently updated their servers to the all new version 5s of PHP and MySQL, which has caused a bit of a problem with some of my queries.  It seems to be an obscure one and I can't seem to find anything in the manuals about it.

 

The query that I'm using is:

     SELECT t1.my_col1
          , t2.my_col2
          , t3.my_col3
          , t4.my_col4
       FROM offer      t1
          , price_type t2
  LEFT JOIN processor  t3
         ON t3.processor_id  = ''
  LEFT JOIN currency   t4
         ON t4.currency_id   = t1.currency_id
      WHERE t1.offer_id      = 1
        AND t1.price_type_id = t2.price_type_id

The problem is with the ON of the second LEFT JOIN. If I run it as it is i.e. comparing the two columns, it says 'Unknown column t1.currency_id', but the currency_id column definitely exists on the offer table. However, when I change that line to t4.currency_id = 1 or t1.currency_id = 1, the query works fine. The query also works fine in v4.

 

Obviously, I can't run it using t1.currency_id = 1, so could anyone tell me whether there was a change in the way ON clauses work between v4 and v5 of MySQL, as I can't find any indiction in the manuals about this?

 

Debbie

 

Link to comment
Share on other sites

  • 1 month later...

I figured it out! For anyone else having the same problem, here was my fix:

 

This is the actual code:

 

$query = 'SELECT A.CatName,A.CatID,B.BoardID,B.bName,B.bDesc,D.PosterName,D.PosterID,D.DatePosted,C.TopicID,D.Subject,C.LastMsgID

FROM '.PREFIX.'categories A,'.PREFIX.'boards B,'.PREFIX.'bpermissions E

LEFT OUTER JOIN '.PREFIX.'topics C ON (B.BoardID=C.BoardID AND C.LastMsgID IN ('.$LastMsgIDList.'))

LEFT OUTER JOIN '.PREFIX.'messages D ON D.MsgID=C.LastMsgID

WHERE A.CatID=B.CatID

AND B.BoardID=E.BoardID

AND E.GroupID='.$CurrentUser['GroupID'].'

AND (BPermMask&'.SetBit(0,$BPermDefs,'view').')>0

'.(($_GET['CatID']) ? 'AND B.CatID='.$_GET['CatID'] : '').'

ORDER BY A.cOrder, B.bOrder';

 

I tried altering in the following way:

 

FROM '.PREFIX.'categories A,'.PREFIX.'boards B,'.PREFIX.'bpermissions E

 

changed to:

 

FROM ('.PREFIX.'categories A,'.PREFIX.'boards B,'.PREFIX.'bpermissions E)

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.