[Delphi 5] query over een query??

Pagina: 1
Acties:
  • 93 views sinds 30-01-2008

  • Arjan404
  • Registratie: December 2000
  • Laatst online: 24-05 07:08

Arjan404

no comments....

Topicstarter
Als ik in delphi 5 een TQuery component heb, is het dan mogelijk om met nog een TQuery component gegevens uit de eerste query te halen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 25-05 23:56
I don't think so...
maar waarom zou je dat eigenlijk willen doen?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 25-05 23:56
I don't think so...
maar waarom zou je dat eigenlijk willen doen?

Je kan natuurlijk wel het resultaat van die eerste query in een temporary table wegschrijven en dan op die table uw andere queries loslaten

https://fgheysels.github.io/


  • Arjan404
  • Registratie: December 2000
  • Laatst online: 24-05 07:08

Arjan404

no comments....

Topicstarter
ja, maar dat is vrij omslachtig ( en met meer dan 100k records ook niet echt snel ) Ik moet de gegevens uit dezelfde tabel, maar de ene query moet van vandaag zijn, en de andere van gisteren. Vervolgens wou ik daar weer een query overleggen die zowel troep uit de ene als de andere netjes naast elkaar legt

  • whoami
  • Registratie: December 2000
  • Laatst online: 25-05 23:56
Werken met een UNION dan:

SELECT *
FROM table
WHERE datum = TODAY
UNION
SELECT *
FROM table
WHERE datum = TODAY - 1

https://fgheysels.github.io/


  • Arjan404
  • Registratie: December 2000
  • Laatst online: 24-05 07:08

Arjan404

no comments....

Topicstarter
Volgens mij krijg je dan de records onder elkaar, en naast elkaar, zou het lukken om daar vervolgens nog weer een group by over te doen? Owja, dan moet je in beide wel een dummy veldje maken

edit:

altijd lekker als je iets vergeet

  • whoami
  • Registratie: December 2000
  • Laatst online: 25-05 23:56
Hoe bedoel je 'onder elkaar" en 'naast elkaar'?
Hij gaat de gegevens van de 2de query achter die van de eerste plakken.
Ik denk wel dat je een ORDER BY kunt doen op het ganse resultaat, maar een group by, dat week nie. Eens proberen...

https://fgheysels.github.io/


  • Arjan404
  • Registratie: December 2000
  • Laatst online: 24-05 07:08

Arjan404

no comments....

Topicstarter
ik ga ook ff prutsen, als het echt niet wil, dan laat ik alles eerst maar wegschrijven naar een temp dbtje, kan ik ook eens koffie halen voor mijn collega's :)

  • IWriteCode
  • Registratie: Juli 2000
  • Laatst online: 21-05 13:54

IWriteCode

Less = more

Op maandag 12 maart 2001 20:32 schreef _ArJaN_ het volgende:
Als ik in delphi 5 een TQuery component heb, is het dan mogelijk om met nog een TQuery component gegevens uit de eerste query te halen?
Nee.

Oplossing: Betere query bouwen waar alles in zit :)

Less = more


  • Elissen
  • Registratie: Januari 2000
  • Laatst online: 12-03 16:55
Als je een UNION gebruikt kan je 1x een ORDER BY of GROUP BY gebruiken. Gewoon helemaal onderaan je query zetten.

P.S. UNION filtert al dubbele gegevens eruit. Wil je dat niet dan moet je UNION ALL gebruiken. Als je GROUP BY gaat gebruiken dan zou je UNION ALL kunnen gebruiken voor de snelheid; scheelt een sorteer/filter-slag wat GROUP BY ook al doet.

SELECT *
FROM tabel_a
UNION ALL
SELECT *
FROM tabel_b
GROUP BY veldjes;

(onder voorbehoud van typefouten... :))

EDIT: Iets vergeten

  • whoami
  • Registratie: December 2000
  • Laatst online: 25-05 23:56
Betere oplossing, een OR gebruiken...
SELECT * FROM table
WHERE datum = today OR datum = TODAY - 1


simpel toch?

https://fgheysels.github.io/


Verwijderd

Nou eigenlijk heb ik nog steeds geen antwoord gezien op de originele vraag. Ikzelf zit ook met een dergelijk probleem. Maar het moet toch wel mogelijk zijn om het resultaat nog eens te sorteren zonder de hele query opnieuw uit te voeren!? Stel bijvoorbeeld ik heb net een query uitgevoerd waar ik als resultaat 10.000rec. terug heb gekregen. En ik wil naast de 'view' van de tabel nog een Tcombobox neerzetten waarmee ik de sortering kan veranderen. Dan wil ik toch niet de hele query opnieuw runnen maar gewoon de data niet ik al heb sorteren. Nou is dus nog steeds de vraag....hoe doe je dit?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op Tuesday 13 March 2001 22:56 schreef Songbo het volgende:
Nou eigenlijk heb ik nog steeds geen antwoord gezien op de originele vraag. Ikzelf zit ook met een dergelijk probleem. Maar het moet toch wel mogelijk zijn om het resultaat nog eens te sorteren zonder de hele query opnieuw uit te voeren!? Stel bijvoorbeeld ik heb net een query uitgevoerd waar ik als resultaat 10.000rec. terug heb gekregen. En ik wil naast de 'view' van de tabel nog een Tcombobox neerzetten waarmee ik de sortering kan veranderen. Dan wil ik toch niet de hele query opnieuw runnen maar gewoon de data niet ik al heb sorteren. Nou is dus nog steeds de vraag....hoe doe je dit?
Ja, je kunt het hele resultaat overnieuw sorteren.

Nee dat kan niet in SQL.

Zal je dus in delphi zelf moeten afhandelen en dus zelf de routine schrijven of inderdaad een nieuwe sql query afvuren op de database.

Je kunt wel de resultaten in een temp tabel gooien. Maar dan nog moet je nog steeds een nieuwe query uitvoeren over die temp tabel.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • ebas
  • Registratie: Maart 2001
  • Laatst online: 20-04-2017

ebas

 

Volgens mij kun je in delphi een query aan een datasource hangen, dus je begint met een query op een db, daar hang je een datasource aan, en daar hand je weer een query aan..

  • troyk
  • Registratie: Juni 2003
  • Laatst online: 02-12-2025

troyk

attrib -r troyk.nfo

Ik heb ongeveer hetzelfde probleem , daarom post ik maar in dit topic

Deze query werkt:
SELECT qryblad1.machine_nummer, qryblad1.bewerkings_tijd, [qryBlad1].[Weeknr_startdatum], [qryBlad1].[Machine_naam], [qryBlad1].[Machine_nummer], [qryBlad1].[selcd], [qryBlad1].[prod_order], [qryBlad1].[oms30], [qryBlad1].[aant_ord], [qryBlad1].[afldat], [qryBlad1].[Bewerkings_tijd], [qryBlad1].[ord_status], SUM([qryblad1].[bewerkings_tijd]) AS total
FROM qryBlad1
ORDER BY [Machine_naam];

Maar ik wil graag dat er in een nieuwe kolom (totaal) de bewerkings_tijd wordt opgeteld aan de hand van de machine_naam.

dus

Machine naam: 200 3
200 4
200 18
200 45
Totaal: ..

toen dacht ik , zoiets:
SELECT qryblad1.machine_nummer, SUM(qryblad1.bewerkings_tijd) as "Totaal", [qryBlad1].[Weeknr_startdatum], [qryBlad1].[Machine_naam], [qryBlad1].[Machine_nummer], [qryBlad1].[selcd], [qryBlad1].[prod_order], [qryBlad1].[oms30], [qryBlad1].[aant_ord], [qryBlad1].[afldat], [qryBlad1].[Bewerkings_tijd], [qryBlad1].[ord_status], SUM([qryblad1].[bewerkings_tijd]) AS total
FROM qryBlad1
ORDER BY [Machine_naam];

dat werkt dus niet, krijg ik de volgende foutmelding:
U probeert een query uit te voeren waarbij de opgegeven expressie : Machine_nummer geen deel uitmaakt van een statische functie.

alvast bedankt :)

It's not who you are , it's who you know.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Begin even een nieuw topic waarin je referereert naar dit topic en [code]-tags om je SQL code zet voor de leesbaarheid :)

Kicken van 3 jaar oude topics schiet niet op, dan gaan mensen reageren op posters die wellicht al jaren niet meer rondlopen hier.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.