Vraag & Antwoord

Webprogrammeren & scripting

SQL query werkt niet

4 antwoorden
  • Help mij alsjeblieft! Ik heb de volgende query en deze werkt niet, alleen kan ik niet vinden waarom niet. [code:1:ceed3aa514] SELECT CustomerID, AutoOfferAmount FROM AutoOffers WHERE ProductID = 1 AND AutoOfferAmount IN ( SELECT MAX( AutoOfferAmount ) FROM AutoOffers WHERE ProductID = 1) [/code:1:ceed3aa514] Ik krijg de volgende error: #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX( AutoOfferAmount ) FROM AutoOffers WHERE ProductID Echter werkt de subquery wel gewoon. Wie heeft er een idee, mag ook een andere oplossing zijn met hetzelfde resultaat. Voor de duidelijkheid even wat extra info: Ik heb een table met bedragen, een id en een groep. Nou wil ik van een groep(ProductID) weten welke ID(CustomerID) het hoogste bedrag(AutoOfferAmount) heeft. Thnx!!!
  • Kijk even of de MySQL versie die je gebruikt subqueries ondersteunt. Dat is namelijk voor versie 3 niet het geval, afaik. Maar bedoel je niet gewoon onderstaande? [code:1:59b78cff37] SELECT CustomerID, AutoOfferAmount FROM AutoOffers WHERE ProductID = 1 ORDER BY AutoOffers DESC LIMIT 1 [/code:1:59b78cff37]
  • Op zich zou dat ook kunnen ja, maar is dat niet veel trager. Aangezien de query wel veel meer data ophaald, of zie ik dat verkeerd?
  • Dat zie je verkeerd. De database zal nooit de gehele set doorsturen naar het verwerkende script maar slechts 1 record. Als je ook nog een composite index hebt op de AutoOfferAmount en ProductID column zal de query parser het waarschijnlijk ook nog behoorlijk kunnen optimaliseren. Maar dat is iets waar je zelf wat mee kan spelen. In het slechtste geval zal inderdaad van een complete set data de hoogste waarde worden bepaald en doorgestuurd, maar dan speelt het zich in ieder geval wel compleet af in de database. De subquery die jij noemt zal imho hoogstwaarschijnlijk niet al te best performen (ik kan alleen geen harde cijfers noemen).

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.