View Full Version : how to combine two SQL query's


sven2
03-14-2008, 08:15 AM
Hello,

how can I do the following:

I have 2 query's with the same field kwaliteitsgegevens.kwaliteitsnaam
Now it should be so that in query 1 all the results from query 2 are excluded.

Is this possible?

Query1:
strSQL = " SELECT Kwaliteitsnaam, FrequentieID, MachineID, Eenheid " & _
" FROM dbo.TblKwaliteitgegevens " & _
" WHERE (FrequentieID = " & [Forms]![FrmIngaveparametersfrq]![txtfrequentie] & ") And (MachineID = " & [Forms]![FrmIngaveparametersfrq]![txtmachine] & ")"

Query2:
strSQL = " SELECT dbo.TblKwaliteitswaarde.Moederrolnummer, dbo.TblKwaliteitgegevens.Kwaliteitsnaam, dbo.TblKwaliteitswaarde.Kwaliteitswaarde, dbo.TblKwaliteitgegevens.Eenheid , dbo.TblKwaliteitgegevens.FrequentieID, dbo.TblKwaliteitgegevens.MachineID " & _
" FROM dbo.TblKwaliteitgegevens INNER JOIN dbo.TblKwaliteitswaarde ON dbo.TblKwaliteitgegevens.KwaliteitID = dbo.TblKwaliteitswaarde.KwaliteitID " & _
" WHERE (dbo.TblKwaliteitgegevens.FrequentieID = " & [Forms]![FrmIngaveparametersfrq]![txtfrequentie] & ") AND (dbo.TblKwaliteitgegevens.MachineID = " & [Forms]![FrmIngaveparametersfrq]![txtmachine] & ") AND (dbo.TblKwaliteitswaarde.Moederrolnummer = " & [Forms]![FrmIngaveparametersfrq]![Txtmoederrolnr] & ")"


Thanks in advance,
Sven.

tehNellie
03-14-2008, 08:25 AM
[edit] misread original Q

tehNellie
03-14-2008, 09:02 AM
Create a stored procedure on SQL server to do it rather than fire SQL from within your application, it'll run faster and your database logic will be where it belongs, in your database.

Lecture over.


SELECT Kwaliteitsnaam, FrequentieID, MachineID, Eenheid
FROM dbo.TblKwaliteitgegevens AS kg
LEFT JOIN
(
SELECT kg.Kwaliteitsnaam
FROM dbo.TblKwaliteitgegevens AS kg
INNER JOIN dbo.TblKwaliteitswaarde AS kw ON
kg.KwaliteitID = kw.KwaliteitID
WHERE (kg.FrequentieID = " & [Forms]![FrmIngaveparametersfrq]![txtfrequentie] & ")
AND (kg.MachineID = " & [Forms]![FrmIngaveparametersfrq]![txtmachine] & ")
AND (kw.Moederrolnummer = " & [Forms]![FrmIngaveparametersfrq]![Txtmoederrolnr] & ")"
) AS q2 on
kg.Kwaliteitsnaam = q2.Kwaliteitsnaam
WHERE (FrequentieID = " & [Forms]![FrmIngaveparametersfrq]![txtfrequentie] & ")
And (MachineID = " & [Forms]![FrmIngaveparametersfrq]![txtmachine] & ")"
AND q2.Kwaliteitsnaam is NULL


is a simple rewrite of your two queries that should produce the results you're looking for. It returns everything that doesn't have a match in query 2 using kwaliteitsnaam to perform a LEFT JOIN between the two queries.