[MySQL] query wil niet lukken

Pagina: 1
Acties:

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Ik heb deze query:
code:
1
2
SELECT poll_antwoorden.antwoord
FROM poll_antwoorden INNER JOIN poll_vragen ON poll_antwoorden.vraag_id = MAX(poll_vragen.vraag_id);

Deze werkt niet... het is de bedoeling dat ie de antwoorden uit de db trekt die bij de laatste vraag hoort... maar je kunt geen max in een where clause gebruiken... kan iemand mij helpen een alternatief te zoeken?

Verwijderd

HAVING ?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Kijk maar eens op www.mysql.com/doc en leer SQL.
Je syntax klopt niet.
Ik kan het helemaal voor je gaan uitspellen, maar heb er geen zin. 1 hint: MAX() kan niet in een join conditie staan, maar als je een subquery gebruikt met een IN-clause gaat het beter

Verwijderd

Hmmm, mijn SQL is een beetje roestig, maar kan je MAX wel op die plek gebruiken? Ik dacht dat het na SELECT moest. Dus een subselect.

<edit>
Er zijn altijd van die strebers die sneller moeten zijn. ;)

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Ik heb nu deze gemaakt:
code:
1
SELECT poll_antwoorden.antwoord FROM poll_antwoorden,poll_vragen HAVING poll_antwoorden.vraag_id = MAX(poll_vragen.vraag_id)

Maar hij geeft deze fout terwijl alle velden bestaan:
[/code]
Unknown column 'poll_antwoorden.vraag_id' in 'having clause'
[/code]
Wat is er mis mee, of kan dit helemaal niet?

Verwijderd

Het mag of kan simpel weg niet bij mysql. je mag in de having alleen een functie vergelijken met een vaste waarde en niet met een veld.. bijvoorbeeld: HAVING max(prijs) > 100.. Als je nou geen mysql had gebruikt maar een "betere" database server die WEL sub queries acepteerd dan zou je het door middel van een sub-query kunnen oplossen

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Kan geen subqueries gebruiken... MySQL..

Maar moet ik het anders dus met 2 queries doen en dan met een where clause de antwoorden halen?
edit:

Net te laat

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op maandag 04 maart 2002 09:52 schreef TimD het volgende:
Het mag of kan simpel weg niet bij mysql. je mag in de having alleen een functie vergelijken met een vaste waarde en niet met een veld.. bijvoorbeeld: HAVING max(prijs) > 100.. Als je nou geen mysql had gebruikt maar een "betere" database server die WEL sub queries acepteerd dan zou je het door middel van een sub-query kunnen oplossen
Sorry, maar het is mijn server niet... en ze hebben alleen MySQL...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Ik zie net op mysql.com dat je max zo wel kunt gebruiken...
code:
1
2
mysql> select user,max(salary) from users
    ->    group by user HAVING max(salary)>10;

Maar een > is toch ook een vergelijking... kun je dan ook niet velden vergelijken?

Verwijderd

Wat dacht je van de volgende BRAKKE oplossing? >:)
Je maakt een query die dat MAX id ding geeft en met het result bouw je de volgende query. Dus where id = variabele.

Verwijderd

Op maandag 04 maart 2002 09:56 schreef Monstar.nl het volgende:
kun je dan ook niet velden vergelijken?
Zie mijn post van net.. alleen met vaste waardes (hele getallen, etc.) dus niet met velden.. sorry

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Waarom niet gewoon het volgende:
code:
1
2
3
SELECT pa.antwoord
FROM   poll_antwoorden pa
ORDER BY pa.vraag_id DESC

Als je dit met een loopje uitleest stop je gewoon op het moment dat je vraag_id wijzigt.
Eventueel neem je een LIMIT op van 500 om te voorkomen dat je de hele tabel ophaalt en je alleen 10 records nodig hebt.

* Goodielover zegt: MySQL is leuk, maar geen sub-query functionaliteit is really #$%#%$#^#

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op maandag 04 maart 2002 10:21 schreef Goodielover het volgende:
Waarom niet gewoon het volgende:
code:
1
2
3
SELECT pa.antwoord
FROM   poll_antwoorden pa
ORDER BY pa.vraag_id DESC

Als je dit met een loopje uitleest stop je gewoon op het moment dat je vraag_id wijzigt.
Eventueel neem je een LIMIT op van 500 om te voorkomen dat je de hele tabel ophaalt en je alleen 10 records nodig hebt.

* Goodielover zegt: MySQL is leuk, maar geen sub-query functionaliteit is really #$%#%$#^#
Hee, dies handig, maar als de telling nou niet gelijk loopt van de twee tabellen?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Bedoel je wel vragen, maar nog geen antwoorden?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 04 maart 2002 10:26 schreef Monstar.nl het volgende:

[..]

Hee, dies handig, maar als de telling nou niet gelijk loopt van de twee tabellen?
Dan gooi je eerst een join op de handel en dan order je het?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op maandag 04 maart 2002 10:36 schreef Glimi het volgende:

[..]

Dan gooi je eerst een join op de handel en dan order je het?
Dat lost niets op. Als de vraag wel bestaat maar het antwoord niet, dan is het resultaat gelijk aan mijn query.
Het enige dat dit oplost is een inconsistente DB, maar daar gaan we maar niet vanuit.

  • The Noid
  • Registratie: Januari 2000
  • Laatst online: 17-03-2011
Op maandag 04 maart 2002 09:41 schreef Monstar.nl het volgende:

Ik heb deze query:

code:
1
2
3
SELECT poll_antwoorden.antwoord

FROM poll_antwoorden INNER JOIN poll_vragen ON poll_antwoorden.vraag_id = MAX(poll_vragen.vraag_id);
Buiten dat deze query niet werkt snap ik ook niet helemaal wat je hier nu wilt... Als dit al zou kunnen zou je alle antwoorden krijgen, met aan elk antwoord de laatste vraag geplakt, ongeacht de vraag die echt bij dat antwoord hoort.
bedoel je niet:
code:
1
2
SELECT poll_antwoorden.antwoord 
FROM poll_antwoorden INNER JOIN poll_vragen ON poll_antwoorden.vraag_id = poll_vragen.vraag_id WHERE poll_vragen.vraag_id=MAX(poll_vragen.vraag_id);

? Dan krijg je alle andwoorden op de laatste vraag.
Alleen krijg je nu ook bij elk antwoord de hele vraag erbij, terwijl die voor al die antwoorden hetzelfde is. Hier kan je dus beter 2 queries gebruiken, eerst de laatste vraag selecteren, daarna daar de antwoorden bij vragen.

This must be that Woodstock place mom and dad are allways talking about


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

[Pissig mode]
Wat een ongelovelijk niets toevoegende post. Alles wat jij inbrengt is al eerder gezegd, zelfs door de topic starter.
Hou daar mee op. Zelfs je SQL klopt niet.
[/Pissig mode]
Op maandag 04 maart 2002 10:56 schreef The_Noid het volgende:

[...Niet het herhalen waard...]
edit:
typo

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op maandag 04 maart 2002 10:34 schreef Goodielover het volgende:
Bedoel je wel vragen, maar nog geen antwoorden?
Yep

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Dan is het mogelijk om een right outer join toe te voegen, maar dan moet je ook op de ID van vraag sorteren en niet op vraag_id uit antwoord. De rest van de logica blijft dan identiek.

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op maandag 04 maart 2002 09:41 schreef Monstar.nl het volgende:
Ik heb deze query:
code:
1
2
SELECT poll_antwoorden.antwoord
FROM poll_antwoorden INNER JOIN poll_vragen ON poll_antwoorden.vraag_id = MAX(poll_vragen.vraag_id);

Deze werkt niet... het is de bedoeling dat ie de antwoorden uit de db trekt die bij de laatste vraag hoort... maar je kunt geen max in een where clause gebruiken... kan iemand mij helpen een alternatief te zoeken?
Kan je hier iets mee?
code:
1
2
3
4
SELECT poll_antwoorden.antwoord
FROM poll_antwoorden , poll_vragen
WHERE poll_antwoorden.vraag_id IN 
  (SELECT MAX(poll_vragen.vraag_id) FROM poll_vragen))

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

Op maandag 04 maart 2002 13:01 schreef Tsjipmanz het volgende:

[..]

Kan je hier iets mee?
code:
1
2
3
4
SELECT poll_antwoorden.antwoord
FROM poll_antwoorden , poll_vragen
WHERE poll_antwoorden.vraag_id IN 
  (SELECT MAX(poll_vragen.vraag_id) FROM poll_vragen))
Aangezien het over MySQL gaat, zijn subqueries nog steeds niet mogelijk..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Hij kan geen suqueries uitvoeren, hij heeft mysql.
De een complete join tussen vragen en antwoorden in de from clausezal ook niet gaan werken
Op maandag 04 maart 2002 13:01 schreef Tsjipmanz het volgende:

[..]

Kan je hier iets mee?
code:
1
2
3
4
SELECT poll_antwoorden.antwoord
FROM poll_antwoorden , poll_vragen
WHERE poll_antwoorden.vraag_id IN 
  (SELECT MAX(poll_vragen.vraag_id) FROM poll_vragen))
edit:
ik ben verantwoordelijk voor de shit die hierna is ontstaan, sorry

  • spine
  • Registratie: Juni 2001
  • Niet online

spine

VISHUDDHI

Op maandag 04 maart 2002 13:04 schreef Goodielover het volgende:
PRUTSER, LEES DAN: HIJ KAN GEEN SUBQUERIES UITVOEREN!!!! HIJ HEEFT MYSQL. Nog zo'n waardeloze post
[..]

edit:
net iets te laat
en net iets te boers...

[BSDFreaks.nl] [www.Dark-Future.org] [Alizarin.nl]


  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op maandag 04 maart 2002 13:04 schreef Goodielover het volgende:
PRUTSER, LEES DAN: HIJ KAN GEEN SUBQUERIES UITVOEREN!!!! HIJ HEEFT MYSQL. Nog zo'n waardeloze post
[..]

edit:
net iets te laat
Kan dat ook ff normaal misschien?

Ten eerste probeer ik die kerel gewoon normaal te helpen, ten tweede was het mij nog niet opgevallen dat het over MySQL ging en dat hierin geen subqueries uitgevoerd kunnen worden.

Alsof jou oplossing met kijken of de vraagid al is veranderd zo sierlijk is. dusty's idee van een ignorelist is toch niet zo raar als het aanvankelijk leek. :r

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • spine
  • Registratie: Juni 2001
  • Niet online

spine

VISHUDDHI

Op maandag 04 maart 2002 13:07 schreef Tsjipmanz het volgende:

[..]

Alsof jou oplossing met kijken of de vraagid al is veranderd zo sierlijk is. dusty's idee van een ignorelist is toch niet zo raar als het aanvankelijk leek. :r
idd...
you ripped the words right out of my mouth

[BSDFreaks.nl] [www.Dark-Future.org] [Alizarin.nl]


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Kan wel, maar ten eerste staat in de topic title heel netjes dat het MySQL betreft en ten tweede geeft de topic starter nota bene zelf aan dat hij geen subqueries kan gebruiken (zie eerste quote). Wel eerst even lezen voordat je post. Het station van de sierlijke oplossingen waren we al voorbij.
Normaal gesproken zal je mij niet op dirty oplossingen kunnen betrappen, maar soms breekt nood wet.
Op maandag 04 maart 2002 09:53 schreef Monstar.nl het volgende:
Kan geen subqueries gebruiken... MySQL..

Maar moet ik het anders dus met 2 queries doen en dan met een where clause de antwoorden halen?
edit:

Net te laat
Op maandag 04 maart 2002 13:07 schreef Tsjipmanz het volgende:

[..]

Kan dat ook ff normaal misschien?

Ten eerste probeer ik die kerel gewoon normaal te helpen, ten tweede was het mij nog niet opgevallen dat het over MySQL ging en dat hierin geen subqueries uitgevoerd kunnen worden.

Alsof jou oplossing met kijken of de vraagid al is veranderd zo sierlijk is. dusty's idee van een ignorelist is toch niet zo raar als het aanvankelijk leek. :r

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 04 maart 2002 13:04 schreef Goodielover het volgende:
PRUTSER, LEES DAN: HIJ KAN GEEN SUBQUERIES UITVOEREN!!!! HIJ HEEFT MYSQL. Nog zo'n waardeloze post
en dan ook nog een complete join tussen vragen en antwoorden in de from clause. Triest
Goed het is al eerder gezegd, dit soort reacties zijn ernstig _ongewenst_

Of ie nou een goed of een fout antwoord geeft.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

OK hierbij mijn excuses.
Het antwoord was qua strekking helemaal correct. Ik geef toe dat ik beter niet zo had kunnen schreeuwen.
Nogmaals sorry. Voorlopig vind ik het nog leuk genoeg hier om te blijven, jullie ook?
Weer vriendjes worden?
Op maandag 04 maart 2002 13:30 schreef ACM het volgende:

[..]

Goed het is al eerder gezegd, dit soort reacties zijn ernstig _ongewenst_

Of ie nou een goed of een fout antwoord geeft.

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op maandag 04 maart 2002 13:33 schreef Goodielover het volgende:
OK hierbij mijn excuses.
Jammer dat het onder druk van ACM is. Van mij zal je in elk geval geen last hebben, mijn "domme antwoorden" zullen je in de toekomst bespaard worden! :)

Maar even goeie "vrienden".

edit:
het geschil is inmiddels opgelost :)

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Euhm... ok... dank jullie allemaal...
Pagina: 1