MySQL en recentste datum

Pagina: 1
Acties:

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 23-08 21:03
Ik heb een MySQL server en daarin een database met een tabel 'orders' en in de tabel de volgende velden: order_id, kl_id, bm_id, status_id, order_datum. Nou wil ik een query maken die de order_id teruggeeft met de recentste order_datum en bij een bepaald kl_id. Dit alles moet vervolgens in ASP worden ingebouwd. Hoe moet mijn query eruit komen te zien?

Groet,

Carpenter

P.S. Ik had het volgende maar dat werkt niet:
sql="SELECT order_id, MAX(order_datum) FROM orders WHERE kl_id = "&klantid&" GROUP BY order_id

  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 23-08 12:02
Carpenter schreef op 10 March 2003 @ 15:09:
Ik heb een MySQL server en daarin een database met een tabel 'orders' en in de tabel de volgende velden: order_id, kl_id, bm_id, status_id, order_datum. Nou wil ik een query maken die de order_id teruggeeft met de recentste order_datum en bij een bepaald kl_id. Dit alles moet vervolgens in ASP worden ingebouwd. Hoe moet mijn query eruit komen te zien?

Groet,

Carpenter

P.S. Ik had het volgende maar dat werkt niet:
sql="SELECT order_id, MAX(order_datum) FROM orders WHERE kl_id = "&klantid&" GROUP BY order_id
misschien group by klantid doen ??

  • Bu588
  • Registratie: Maart 2000
  • Laatst online: 22-12-2025
Probeer dit eens:
code:
1
sql="SELECT order_id FROM orders WHERE kl_id = " & klantid & " AND order_datum = "  & MAX(order_datum) & " GROUP BY order_id"

Nothing is fool-proof to a sufficiently talented fool...


  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 23-08 12:02
groeperen op order geeft je niet de max(datum) per order , dus niet van de klant van de klant.

Groepeer maar op klant, dan komt alles ok ;)

[ Voor 6% gewijzigd door Bud_s op 10-03-2003 15:24 ]


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 23-08 21:03
Ik heb het eerst in Access geprobeerd met deze query:

SELECT orders.order_id
FROM orders
WHERE (((orders.order_datum)=(SELECT Max(order_datum)
FROM orders;)));

en daar doet hij het wel, alleen niet met MySQL :S
Heeft iemand een oplossing?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Voor zover ik weet (heb niet ENORM veel ervaring met MySQL) ondersteunt MySQL geen subqueries.

Als je nou eens de Max(Order_datum) in een variabele zet en deze vervolgens via code in je SQL opneemt? Lijkt me een goeie oplossing.

My personal website


  • cenix
  • Registratie: September 2001
  • Laatst online: 07:37
sql="SELECT order_id, MAX(order_datum) FROM orders WHERE kl_id = "&klantid&" GROUP BY order_id
gebruik
SELECT order_id, MAX(order_datum) FROM orders WHERE kl_id = "&klantid&" ORDER BY order_id DESC

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 23-08 21:03
cenix schreef op 10 March 2003 @ 15:33:
[...]


gebruik
SELECT order_id, MAX(order_datum) FROM orders WHERE kl_id = "&klantid&" ORDER BY order_id DESC
dan krijg ik meerdere records terug en dat is niet de bedoeling. Het ligt denk ik idd aan het feit dat MySQL geen subqueries ondersteund. Dus ik maak wel een variabele en die gebruik ik als subquery.

  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 23-08 12:02
carpenter :

groeperen op klantid !

probeer maar , en laat maar weten wat daar niet aan zou werken ??

geef je resultaat eens hier op

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

gebruik
SELECT order_id, MAX(order_datum) FROM orders WHERE kl_id = "&klantid&" ORDER BY order_id DESC
dan krijg ik meerdere records terug en dat is niet de bedoeling
SELECT order_id, MAX(order_datum) FROM orders WHERE kl_id = "&klantid&" ORDER BY order_id DESC LIMIT 1

Dat zou toch moeten werken (niet echt veel ervaring met queries, naja, dat wel, maar niet zulke ingewikkelde ;))

Research is what I'm doing when I don't know what I'm doing.


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 23-08 21:03
Ik heb dit geprobeerd in Access en dit werkt wel (in Access tenminste):

subquery="SELECT MAX(order_datum) FROM orders WHERE kl_id="&klantid&""
sql="SELECT order_id FROM orders WHERE kl_id = "&klantid&" AND order_datum = "&subquery&""

Alleen in MySQL zegt ie het volgende:

ADODB.Recordset.1 error '80004005'

SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near 'SELECT MAX(order_datum) FROM orders WHERE kl_id=1 ' at line 1


/test/html/content/shop/shop_akkoord.asp, line 24

[ Voor 44% gewijzigd door Carpenter op 10-03-2003 15:53 ]


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 23-08 21:03
Het is gelukt !!! Dit was de goede code:

sql="SELECT MAX(order_datum) FROM orders WHERE kl_id="&klantid&""
Set rs = Server.createObject("ADODB.Recordset")
rs.Open sql, conn, 1
jaar = Year(rs(0))
maand = Month(rs(0))
dag = Day(rs(0))
datum = jaar&"-"&maand&"-"&dag

sql="SELECT order_id FROM orders WHERE kl_id = "&klantid&" AND order_datum = '"&datum&"' ORDER BY order_id DESC LIMIT 1"
rs.close
Set rs = Nothing
Set rs = Server.createObject("ADODB.Recordset")
rs.Open sql, conn, 2, 3

Allemaal bedankt voor jullie inzet :D
Pagina: 1