Как мне объединить эти два запроса в один? - PullRequest
1 голос
/ 09 января 2012

Query1:

    SELECT DISTINCT FirstOfFrequencyMHz, Min(LicenceData.distance) AS CoFX
FROM [Freq List], LicenceData
WHERE ((([LicenceData].class_stat) Like 'F*') And (([LicenceData].type_lc)="A") And (([LicenceData].frequency) Between FirstOfFrequencyMHz-0.0249 And FirstOfFrequencyMHz+0.0249))
GROUP BY FirstOfFrequencyMHz

Query2:

    SELECT DISTINCT FirstOfFrequencyMHz, Min(LicenceData.distance) AS CoMO
FROM [Freq List], LicenceData
WHERE ((([LicenceData].class_stat) Like 'M*') And (([LicenceData].type_lc)="A") And (([LicenceData].frequency) Between FirstOfFrequencyMHz-0.0249 And FirstOfFrequencyMHz+0.0249))
GROUP BY FirstOfFrequencyMHz

Попытка комбинированного запроса:

SELECT DISTINCT FirstOfFrequencyMHz, 

(SELECT Min(distance) AS Expr1
FROM [Freq List], LicenceData
WHERE ((([LicenceData].class_stat) Like 'F*') And (([LicenceData].type_lc)="A") And (([LicenceData].frequency) Between FirstOfFrequencyMHz-0.0249 And FirstOfFrequencyMHz+0.0249))) as COFX,

(SELECT Min(distance) AS Expr1
FROM [Freq List], LicenceData
WHERE ((([LicenceData].class_stat) Like 'M*') And (([LicenceData].type_lc)="A") And (([LicenceData].frequency) Between FirstOfFrequencyMHz-0.0249 And FirstOfFrequencyMHz+0.0249))) as COMO

FROM [Freq List]

Моя опубликованная попытка комбинированного запроса не возвращает правильные значения, все ячейки для столбцов CoFX и CoMO имеют одинаковый номер.

Два запроса работают независимо. Мне просто нужно знать, как их объединить (всего нужно объединить 4 запроса, которые аналогичны первым двум опубликованным запросам), или даже возможно объединить их.

1 Ответ

0 голосов
/ 11 января 2012

Это может быть лучшим способом, так как нет прямой связи между таблицами, вам нужно использовать подвыборы, чтобы убедиться, что на них ссылаются правильно:

SELECT DISTINCT F.FirstOfFrequencyMHz,
(
SELECT Min(L.Distance)
FROM LicenceData As L
WHERE L.Class_Stat Like 'F*'
AND L.Type_LC = 'A'
AND L.Frequency Between F.FirstOfFrequencyMHz-0.0249 And F.FirstOfFrequency+0.0249
) CoFX,
(
SELECT Min(L2.Distance)
FROM LicenceData As L2
WHERE L2.Class_Stat Like 'M*'
AND L2.Type_LC = 'A'
AND L2.Frequency Between F.FirstOfFrequencyMHz-0.0249 And F.FirstOfFrequency+0.0249
) CoMO
FROM [Freq List] As F

Удачи:)

...