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?
I don't think so...
maar waarom zou je dat eigenlijk willen doen?
maar waarom zou je dat eigenlijk willen doen?
https://fgheysels.github.io/
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
Werken met een UNION dan:
SELECT *
FROM table
WHERE datum = TODAY
UNION
SELECT *
FROM table
WHERE datum = TODAY - 1
SELECT *
FROM table
WHERE datum = TODAY
UNION
SELECT *
FROM table
WHERE datum = TODAY - 1
https://fgheysels.github.io/
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
altijd lekker als je iets vergeet
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...
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/
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
Nee.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?
Oplossing: Betere query bouwen waar alles in zit
Less = more
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
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
Betere oplossing, een OR gebruiken...
SELECT * FROM table
WHERE datum = today OR datum = TODAY - 1
simpel toch?
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?
Ja, je kunt het hele resultaat overnieuw sorteren.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?
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
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..
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
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.
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.
Kicken van 3 jaar oude topics schiet niet op, dan gaan mensen reageren op posters die wellicht al jaren niet meer rondlopen hier.
Pagina: 1
Dit topic is gesloten.
![]()