Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: vraag om query te sorteren  (gelezen 4858 keer)

0 leden en 1 gast bekijken dit topic.

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
vraag om query te sorteren
« Gepost op: 16 februari 2011, 21:04:14 »
Beste forumleden,

Ik ben op zoek naar een manier om de gegevens die opgevraagd worden door een query te sorteren.

de query :
SELECT Product.MaatId
FROM Product
ORDER BY Product.MaatId;

Het resultaat van die query :

10 A
10 B
10 C
101 A
101 B
101 C

Nu zou ik graag willen dat de query alsvolgt sorteert:
10 A
101 A
10 B
101 B
10 C
101 C

Zocht al met sql syntaxis, maar kom er niet uit.

Kan iemand zijn licht eens laten schijnen?

Grt,

Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: vraag om query te sorteren
« Reactie #1 Gepost op: 16 februari 2011, 21:19:37 »
SELECT maatid FROM Product
ORDER BY substring(maatid, length(maatid) - 1, length(maatid)), maatid

Dit werkt in elk geval perfect in MySQL ;). Probeer eens substr ipv substring als je een syntaxfout krijgt.

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: vraag om query te sorteren
« Reactie #2 Gepost op: 16 februari 2011, 21:36:26 »
Bedankt voor de snelle reaktie.
Dit kan allicht werken in mysql,
maar in sql access pakt het niet.

substring of substr wordt niet herkend.

andere suggesties?
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: vraag om query te sorteren
« Reactie #3 Gepost op: 16 februari 2011, 22:13:41 »
SELECT maatid FROM Product
ORDER BY right(maatid,1), maatid

?

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: vraag om query te sorteren
« Reactie #4 Gepost op: 17 februari 2011, 08:54:59 »
Dit werkt!


Echter sorteert de query wel de letters, maar nadien
niet meer op de cijfers.
het resultaat:

Naam   Expr1
705 A   A
1715 A   A
750 A   A
900 B   B
750 B   B
1750 B   B
1000 C   C
900 C   C
850 C   C
800 C   C
900 D   D

Ik poog na de letters, te sorteren op de getallen.
Kan je daarbij helpen?

M.
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: vraag om query te sorteren
« Reactie #5 Gepost op: 17 februari 2011, 10:03:38 »
SELECT maatid
FROM Product
ORDER BY right(maatid,1), cint(left(maatid, len(maatid) - 1))

:)

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: vraag om query te sorteren
« Reactie #6 Gepost op: 17 februari 2011, 10:18:04 »
idd Firebirdy ;-)
ik had  '-2' omwille  van die spatie gedaan
SELECT tblOrders.MaatID
FROM tblOrders
ORDER BY Right([maatid],1), CInt(Left([maatid],Len([maatid])-2));
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: vraag om query te sorteren
« Reactie #7 Gepost op: 17 februari 2011, 10:26:13 »
Ah, ik had eerst een trim() er rond staan voor die spatie :). Maar ik bedacht toen dat CInt() daar zelf waarschijnlijk rekening mee ging houden.

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: vraag om query te sorteren
« Reactie #8 Gepost op: 18 februari 2011, 12:03:23 »
Besten,

bedankt voor de hulp. 't Werkt! :)

Echter in de query wil ik incalculeren dat velden van maatid leeg zijn' "" ' of worden ingevuld met een '-'.
Ik denk dat de sqlcode aangepast moet worden in het deel : CInt(Left([MaatId],Len([MaatId])-2)) 

Kunnen jullie ook in lekentaal 's uitleggen wat bovengeschreven code doet?

Txs,

Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: vraag om query te sorteren
« Reactie #9 Gepost op: 18 februari 2011, 12:18:51 »
Een tip voor nieuwe vragen: geef het volledige bereik van de mogelijke waarden, zo kunnen we meteen een passende query proberen op te stellen ;).

Wat gebeurt er nu met de waarden die niets of '-' bevatten? Wat wil je dat ermee gebeurt?

Citaat
ORDER BY right(maatid,1), cint(left(maatid, len(maatid) - 1))

- sorteer eerst op:
> right(maatid, 1) = 1 karakter van maatid, vanaf rechts te beginnen

- sorteer daarna op:
> CInt() = converteer naar integer = converteer naar geheel getal
> left(maatid, x) = x karakters van maatid, vanaf links te beginnen
> met x = len(maatid) - 1 = lengte van maatid min één

M.a.w.: als je '12345 A' hebt als waarde, sorteer eerst op het laatste teken (A), sorteer daarna op alle tekens behalve het laatste ('12345 '), beschouwd als geheel getal (12345).

Offline Maurann

  • Volledig lid
  • **
  • Berichten: 166
Re: vraag om query te sorteren
« Reactie #10 Gepost op: 18 februari 2011, 13:01:24 »
Tja, 't was niet zo klaar hé.

Maar de query die nu wordt toegepast :
SELECT Contacts.Naam, Contacts.Postcode, Count(Contacts.Postcode) AS AantalVanPostcode
FROM Contacts
GROUP BY Contacts.Naam, Contacts.Postcode, Right([Postcode],1), CInt(Left([Postcode],Len([Postcode])-2))
ORDER BY Contacts.Naam, Right([Postcode],1), CInt(Left([Postcode],Len([Postcode])-2));

op basis van volgende tabel:
Contact_ID   Naam      Postcode   Plaats
1   Paul   Paul Snip   Straat 1   1001 b   Den Haag
2   Robert      Straat 1   -   Den Haag
3   paul      Straat 1   10111 b   Den Haag
4   paul      Straat 1   915 b   Den Haag
5   paul      Straat 1   915 b   Den Haag

geeft als resultaat: ongeldige procedureaanroep omdat er '-' in het veld postcode staat.
ook als het veld leeg is wil ik graag dat de query het totaal berekent.

indien ik '-' vervang door een waarde zoals '1001 b'
dan is het resultaat:
Naam   Postcode   AantalVanPostcode
paul   915 b   2
Paul   1001 b   1
paul   10111 b   1
Robert   1001 b      1.

Dus ik wil dat de query ook berekent wordt als er velden van maatid niet zijn ingevuld, of zijn ingevuld met een '-'.

Maurann
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

 


www.combell.com