Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

SQL query werkt niet

Anoniem
BasHamar
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

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