[myodbc]select in error

Pagina: 1
Acties:

  • edm
  • Registratie: December 2000
  • Laatst online: 13-10-2024
Ik moet wat gegevens halen uit een database die een beetje krom ontworpen is(niet goed uitgesplitst). Dit doe ik met de volgende query
code:
1
2
3
SELECT salesh.naam, salesh.email, salesh.reclame
FROM salesh where ordernr in (SELECT Max(ordernr) 
AS orderNO FROM salesh GROUP BY email);


Zoals je wellicht op kunt maken uit deze query staan er duplicaten in het veld e-mail en wil ik de gegevens van de laatst gemaakte order hebben en daarvan wil ik weten of de gebruiker wel of geen reclame wenst te hebben. Nu heb ik deze sql code getest op een access-database met locale tabellen en daar doet ie het prima. Als ik echter deze zelfde query op gekoppelde mysql tabellen los laat krijg ik een fout en wel de volgende:
You have an error in your sql syntax near select max('ms2'.'ordernr' from 'salesh' 'ms2' group by 'ms2'.'email' at line 1.

Het vreemde is dat het stuk van de where in (SELECT Max(ordernr) AS orderNO FROM salesh GROUP BY email) gewoon goed evalueert. Het eerste stuk werkt ook als ik zoiets doe:
code:
1
2
SELECT salesh.naam, salesh.email, salesh.reclame
FROM salesh where ordernr in (1,2,3)


Heeft iemand een idee wat hier mis gaat?

  • RM-rf
  • Registratie: September 2000
  • Nu online

RM-rf

1 2 3 4 5 7 6 8 9

edm schreef op 28 February 2003 @ 08:51:

Heeft iemand een idee wat hier mis gaat?
misschien verkeerd forum (/14 lijkt me toepasselijker).

verder ondersteund MySQL pas subselects vanaf 4.0 (huidige Beta).
grote kans dat je daar een 3.x-versie draait (aka wat is je MySQL-versie?):
http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • RupS
  • Registratie: Februari 2001
  • Laatst online: 22-01 12:46
Wat hier misgaat is dat mySQL geen subqueries ondersteunt :)

Pas vanaf versie 4.1 Alpha ondersteunt mySQL ze wel.
Als ik jou was zou ik het oplossen met een JOIN.

[ Voor 7% gewijzigd door RupS op 28-02-2003 09:24 ]


  • Willem
  • Registratie: Februari 2001
  • Laatst online: 02:05
move /13 -> /14 :)

Motor (of auto) onderhoud bijhouden


  • edm
  • Registratie: December 2000
  • Laatst online: 13-10-2024
Ik heb inderdaad geen versie 4 maar Mysql versie 3.23.

(o ja sorry dat ik het in verkeerde forum gezet had, was kennelijk nog niet geheel wakker)

Ik had het in eerste instantie ook met een join op proberen te lossen, maar ik kon helaas geen SQL query verzinnen waarmee het duplicaten probleem afgehandeld wordt. Ik moet dus alle records uit de sales tabel hebben, maar de duplicaten moeten weggefilterd worden behalve de laatste. Ik ben al met distinct aan het pielen geweest, maar dat gaat ook niet werken.

Heeft iemand dan een alternatieve query voor mij?


Eigenlijk zou de tabel gewoon netjes uitgesplitst moeten worden, maar dat is helaas geen optie.

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 22-01 12:46
Het enige wat ik zo snel kan bedenken is twee queries :)
Ik weet niet in welke taal/pakket je de query verwerkt, maar kun je niet gewoon als eerste query 2 draaien, output in een array stoppen, en die vervolgens achter de eerste query plakken?

  • edm
  • Registratie: December 2000
  • Laatst online: 13-10-2024
Het enige wat ik zo snel kan bedenken is twee queries
Ik weet niet in welke taal/pakket je de query verwerkt, maar kun je niet gewoon als eerste query 2 draaien, output in een array stoppen, en die vervolgens achter de eerste query plakken?
Tja dat is wel een hele botte oplossing ;), maar wel eentje die gaat werken. Maar is er geen elegante oplossing?

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 22-01 12:46
Nog maar een ietwat vreemde oplossing dan:

Als je weet wat de waarde is voor het wel of niet willen van reclame (0, of 1 oid), dan kan je het natuurlijk zo doen:

code:
1
2
3
SELECT MAX(ordernr), naam, email 
FROM salesh WHERE reclame=1 
GROUP BY naam, email;


Ook geen nette oplossing, maar ik zou het anders echt niet weten met de tabel die jij beschrijft ;)
Of denk ik nu te simpel? B)

Dan zul je in het programma afhankelijk van wat je wilt ophalen, verschillende queries moeten gebruiken ...

[ Voor 3% gewijzigd door RupS op 28-02-2003 12:15 ]


  • edm
  • Registratie: December 2000
  • Laatst online: 13-10-2024
Ik heb inmiddels de niet elegante oplossing met 2 x een query uitvoeren geimplementeerd :(. En dat werkt.... In ieder geval bedankt.
Pagina: 1