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] subquery

None
4 antwoorden
  • Hallo mensen,

    Ik heb moeite met subqueries. Ik krijg het vaak niet voor elkaar te doorgronden waarom een bepaalde query niet werkt. Ik krijg de volgende namelijk niet aan de praat:

    SELECT cell1 FROM table WHERE datum = (SELECT max(datum) FROM table WHERE datum < '2007-09-19)

    Ik werk op een server met mySQL versie 4.0.27

    Bedankt
    Jasper
  • [quote:9be60478ce="jasperlevink"]Hallo mensen,

    Ik heb moeite met subqueries. Ik krijg het vaak niet voor elkaar te doorgronden waarom een bepaalde query niet werkt. Ik krijg de volgende namelijk niet aan de praat:

    SELECT cell1 FROM table WHERE datum = (SELECT max(datum) FROM table WHERE datum < '2007-09-19)

    Ik werk op een server met mySQL versie 4.0.27

    Bedankt
    Jasper[/quote:9be60478ce]
    Allereerst: ik hoop niet dat de tabel echt de naam 'table' heeft. Dat is een gereserveerde term, die je op zich wel kan gebruiken, maar dat wordt niet aangeraden. Beter is om een naam te kiezen waaraan je kan zien wat er in de tabel wordt opgeslagen. Ik ga er maar even van uit dat het gewoon een voorbeeld is…

    Anyway, als antwoord op je vraag: uit een subquery krijg je een recordset terug, geen waarde. Je zal dus moeten controleren of de het veld wat je zoekt voorkomt IN die recordset. Om je voorbeeld te gebruiken:[code:1:9be60478ce]SELECT cell1 FROM table WHERE datum IN (SELECT max(datum) FROM table WHERE datum < '2007-09-19')
    [/code:1:9be60478ce]Dan krijg je wel resultaat.
  • Hallo meneer_ed (en anderen)
    Bedankt voor je reactie. Ik dacht altijd dat je gewoon = kunt gebruiken als je zeker weet dat je subquery maar één resultaat geeft (zoals hier). Echter ik heb IN geprobeerd maar ook dat werkt niet:

    ***************

    Fout

    SQL-query: Documentatie

    SELECT uitthuis, tegenstander, uitslag, datum
    FROM wedstrijdsecretaris_wedstrijden
    WHERE datum
    IN (

    SELECT max( datum )
    FROM wedstrijdsecretaris_wedstrijden
    WHERE datum < '2007-09-20'
    )

    MySQL retourneerde: Documentatie
    #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(datum) FROM wedstrijdsecretaris_wedstrijden WHERE da

    **************

    De losse subquery werkt prima en ook de query met het resultaat ingevuld werkt ook prima.. Ik snap er niks van…
    Thanks
  • Heb het probleem gevonden.. Versie 4.0.x is niet voldoende :(
    Bedankt voor de moeite!

Beantwoord deze vraag

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