login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MySQL query gaat opeens niet meer

Offline CDNC - 22/06/2009 10:47 (laatste wijziging 22/06/2009 10:48)
Avatar van CDNCPHP ver gevorderde Hele query, enkel het stukie JOIN ... ON is van belang nu
  1. SELECT
  2. i.itemID AS itemID,
  3. i.itemName AS itemName,
  4. i.itemTime AS itemTime,
  5. i.itemViews AS views,
  6. i.premView AS premView,
  7. i.premComment AS premComment,
  8. user.userName AS userName,
  9. COUNT(comment.commentID) AS comments
  10. FROM
  11. `". tblUser ."` AS user,
  12. `". tblItem ."` AS i,
  13. `". tblCat ."` AS cat
  14. LEFT JOIN
  15. `". tblComment ."` AS comment
  16. ON(
  17. comment.referenceID = i.itemID
  18. AND
  19. comment.reference2ID = 1
  20. )
  21. WHERE
  22.  
  23. i.catID = ". ((isset($gCtID)) ? $gCtID : 0) ."
  24. AND
  25. user.userID = i.userID
  26. AND
  27. cat.catID = i.catID
  28. AND
  29. cat.catPrem <= ". $oSH->retRank() ."
  30. AND
  31. (
  32. i.premView = 1
  33. OR
  34. ". $oSH->retRank() ." >= 8
  35. )
  36. GROUP BY
  37. i.itemID
  38. ORDER BY
  39. i.premView DESC,
  40. i.itemName ASC


Bovenstaande heeft altijd gewerkt, totdat Mysql/Server/PHP het nodig vond te gaan error-en

  1. Fatale MySql error IN class-FUNCTION:
  2. Unknown COLUMN 'i.itemID' IN 'on clause'
  3. IN:
  4. SELECT i.itemID ....


Maar i.itemID bestaat want ik gebruik het ook in de WHERE en in DE GROUP BY waar het geen error oflevert.

6 antwoorden

Gesponsorde links
Offline Koen - 22/06/2009 10:56
Avatar van Koen PHP expert Probeer eens gewoon itemID in de plaats van "i.itemID", aangezien je dit selecteert als itemID (met het AS statement)

Als dit niet werkt, probeer dan je query eens te echo-en en geef ook eens de structuur van de betreffende tabel (items) 
Offline CDNC - 22/06/2009 11:00 (laatste wijziging 22/06/2009 11:03)
Avatar van CDNC PHP ver gevorderde
  1. CREATE TABLE `tblItem` (
  2. `itemID` int(11) NOT NULL AUTO_INCREMENT,
  3. `catID` tinyint(11) NOT NULL DEFAULT '0',
  4. `userID` tinyint(11) NOT NULL DEFAULT '0',
  5. `itemName` varchar(100) NOT NULL DEFAULT '',
  6. `itemExplaned` text NOT NULL,
  7. `itemDownloaded` int(11) NOT NULL DEFAULT '0',
  8. `itemViews` int(11) NOT NULL DEFAULT '0',
  9. `itemTime` varchar(25) NOT NULL DEFAULT '',
  10. `itemLastEdit` varchar(25) NOT NULL DEFAULT '',
  11. `premComment` tinyint(1) NOT NULL DEFAULT '1',
  12. `premView` smallint(1) NOT NULL DEFAULT '1',
  13. PRIMARY KEY (`itemID`)
  14. ) ENGINE=MyISAM


itemID ipv i.itemID had ik al geprobeert, error blijft. Het heeft gewerkt, dat is het rare, normaal kan code op zichzelf niet kapot gaan...


Zo ziet de hele error eruit:
  1. Fatale MySql error IN class-FUNCTION:
  2. Unknown COLUMN 'i.itemID' IN 'on clause'
  3. IN:
  4.  
  5.  
  6. SELECT
  7. i.itemID AS itemID,
  8. i.itemName AS itemName,
  9. i.itemTime AS itemTime,
  10. i.itemViews AS views,
  11. i.premView AS premView,
  12. i.premComment AS premComment,
  13. user.userName AS userName,
  14. COUNT(comment.commentID) AS comments
  15. FROM
  16. `tblUser` AS user,
  17. `tblItem` AS i,
  18. `tblCategorie` AS cat
  19. LEFT JOIN
  20. `tblComments` AS comment
  21. ON(
  22. comment.referenceID = i.itemID
  23. AND
  24. comment.reference2ID = 1
  25. )
  26. WHERE
  27.  
  28. i.catID = 17
  29. AND
  30. user.userID = i.userID
  31. AND
  32. cat.catID = i.catID
  33. AND
  34. cat.catPrem <= 0
  35. AND
  36. (
  37. i.premView = 1
  38. OR
  39. 0 >= 8
  40. )
  41. GROUP BY
  42. i.itemID
  43. ORDER BY
  44. i.premView DESC,
  45. i.itemName ASC
Offline Koen - 22/06/2009 11:02
Avatar van Koen PHP expert Is er een verandering gebeurt aan de mysql versie?
Offline CDNC - 22/06/2009 11:03 (laatste wijziging 22/06/2009 11:08)
Avatar van CDNC PHP ver gevorderde Geen idee... Maar dat zou het probleem toch niet mogen veroorzaken?

E: Als ik itemID door eender wat vervang gaat het wel, maar dan heeft het geen nut meer. En als ik dat regeltje uit de ON haal, en naar de WHERE verplaats, geen error. Maar dan is het 'join' effect weg, en zo werkt het niet zoals het moet (logisch..)
Offline Koen - 22/06/2009 11:08
Avatar van Koen PHP expert Niet voor zover ik weet, maar er moet toch iets veranderd zijn aangezien het vroeger wel ging...

Wat krijg je wanneer je die query uitprint?
Offline CDNC - 22/06/2009 11:11 (laatste wijziging 22/06/2009 11:48)
Avatar van CDNC PHP ver gevorderde Ik ben wel aan de pagina's bezig weest, maar van de query's ben ik afgebleven.


Citaat:
Wat krijg je wanneer je die query uitprint?

Hoe bedoel je? De query echo ik als er een error op treed (dan zijn de variabelen dus ingevuld.) Dat is die die laatse lange lap code die ik heb gepost (ID: 841) (ID's zijn random cijfers blijkbaar)



EDIT: de PMA versie is wel geüpdated, ik weet niet wanneer, maar ze anders dan een tijd geleden. Het is nu 3.2.0

Ik heb een mail gestuurt naar de hoster met de vraag of wat is gebeurt aan de mysql versie. En JA! van 4.1 naar 5.1
Dus het zal daar wel aan liggen... Maar hoe dat omzeilen?? Ik zou het tellen van reacties uit die query kunnen slopen en bij het uitlezen van de resultaten het aantal reacties tellen (=> heel veel query's doen dus)

Maar kun je het ook anders doen, zodat alles binnen 1 query kan worden opgelost.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.188s