-
Здравствуйте,
Есть вот такой запрос:SELECT Devices.PartNumber, ParamsDictionary.ParamName, ISNULL(Params.ParamValue, 0) AS ParamValue
FROM Params, Measurments, Devices, ParamsDictionary
WHERE (1=1)
AND (Params.MeasurmentID = Measurments.MeasurmentID)
AND (Measurments.DeviceID = Devices.DeviceID)
AND (Params.ParamID = ParamsDictionary.ParamID)
Он возвращает 565 записей.1 Rd 10.0
1 Ld 20.0
1 Cd 33.0
1 Cs 0.0
1 Ke 0.0
1 Qm 0.0
1 Ct 0.0
1 Tg 0.0
1 Mq 0.0
1 Mxx 33.0
1 RealResX 40.0
1 RealResY 50.0
1 Rd 3647.7981949631298
1 Ld 4.43077772442183
1 Cd 2.71909446089571E-9
1 Cs 5.3647565251156097E-8
1 Ke 0.21560693096653899
Eсли теперь добавить ORDER BY,SELECT Devices.PartNumber, ParamsDictionary.ParamName, ISNULL(Params.ParamValue, 0) AS ParamValue
FROM Params, Measurments, Devices, ParamsDictionary
WHERE (1=1)
AND (Params.MeasurmentID = Measurments.MeasurmentID)
AND (Measurments.DeviceID = Devices.DeviceID)
AND (Params.ParamID = ParamsDictionary.ParamID)
ORDER BY
ParamsDictionary.ParamName
то происходит странное, саписей возвращается всего 29:1 AResX 1237.0
1 AResX 1058.0
1 AResX 1422.0
1 AResX 1241.0
1 AResX 1011.0
1 AResX 14930.0
1 AResX 15000.0
1 AResX 14790.0
1 AResX 14870.0
1 AResX 15656.0
1 AResY -3.4609389132356227E-5
1 AResY -3.0261965378031164E-5
1 AResY -2.8533385432183422E-5
1 AResY -3.3117547815209036E-5
1 AResY -2.5954816962325822E-5
1 AResY -4.009030973861627E-5
1 AResY -9.8969197281917332E-6
1 AResY -1.1565236945898505E-4
1 AResY -8.7384250946342945E-6
1 AResY -9.1479250841075554E-6
1 Cd 0.0
1 Cd 0.0
1 Cd 0.0
1 Cd 0.0
1 Cd 5.7818401941997712E-6
10 Cd 1.0310782376991499E-9
10 Cd 1.0465605888949501E-9
10 Cd 1.1779648224868799E-9
10 Cd 1.16088739405521E-9
Куда же деваются остальные? -
Использую MS SQL Server 2000. Rjyrhtnyj MSDE
-
> [0] Kolan © (06.05.08 11:21)
> саписей возвращается всего 29:
А из чего это видно? -
Из QueryAnalyzera
-
Anatoly Podgoretsky © (06.05.08 11:43) [4]> Kolan (06.05.2008 11:21:00) [0]
А как узнал,
А как ты в этой грязи разбираешься, какой Cd нужный, правильный? -
> А как ты в этой грязи разбираешься, какой Cd нужный, правильный?
Эмм Где грязь?
Для яность тогда скажу, что таблицы такие:
Params
3 MeasurmentID int 4 0
2 ParamID int 4 0
0 ParamValue float 8 1
Measurments3 MeasurmentID int 4 0
0 DeviceID int 4 0
0 OperatorID int 4 0
0 OperationID int 4 1
0 CharacteristicsFileName varchar 1024 1
0 MeasurmentDateTime datetime 8 0
0 Note varchar 50 1
Devices3 DeviceID int 4 0
0 DeviceNumber int 4 0
0 PartNumber int 4 0
0 DeviceTypeID int 4 0
ParamsDictionary3 ParamID int 4 0
0 ParamName varchar 20 0 -
1 Cd 0.0
1 Cd 0.0
1 Cd 0.0
1 Cd 0.0
У тебя в НД 4 одинаковых значения. Вопрос: а нафига? -
> У тебя в НД 4 одинаковых значения. Вопрос: а нафига?
Потому, что у них разные другие поля, номера измерения напрмер. См. условие WHERE в [0].
Я вообще хочу их сгрупировать, но групировка тоже странно работает. Стал пробовать. А что-то не то даже при сортироваке -
Anatoly Podgoretsky © (06.05.08 13:04) [8]
> Эмм… Где грязь?
А ты не видишь?1 Cd 33.0
1 Cd 2.71909446089571E-9
1 Cs 0.0
1 Cs 5.3647565251156097E-8
1 RealResX 40.0
1 RealResY 50.0
1 Rd 3647.7981949631298
1 Ld 4.43077772442183
1 Ld 20.0 -
Anatoly Podgoretsky © (06.05.08 13:05) [9]
> Я вообще хочу их сгрупировать, но групировка тоже странно
> работает.
И как же ты такое сгрупируешь?
И почему у тебя все странно? -
А ты не видишь?
1 Cd 33.0
1 Cd 2.71909446089571E-9
1 Cs 0.0
1 Cs 5.3647565251156097E-8
1 RealResX 40.0
1 RealResY 50.0
1 Rd 3647.7981949631298
1 Ld 4.43077772442183
1 Ld 20.0
> И как же ты такое сгрупируешь?
Я думаю что так:SELECT Devices.PartNumber, ParamsDictionary.ParamName, Sum(ISNULL(Params.ParamValue, 0)) AS ParamValue
FROM Params, Measurments, Devices, ParamsDictionary
WHERE (1=1)
AND (Params.MeasurmentID = Measurments.MeasurmentID)
AND (Measurments.DeviceID = Devices.DeviceID)
AND (Params.ParamID = ParamsDictionary.ParamID)
GROUP BY
Devices.PartNumber, ParamsDictionary.ParamName
И будет1 Cd 33.0 + 2.71909446089571E-9
1 Cs 0.0 + 5.3647565251156097E-8
1 RealResX 40.0 + 50.0
1 Rd 3647.7981949631298
1 Ld 4.43077772442183 + 20.0
Не пойму где я не прав -
При этом при исполнении этого запроса в прграмме и выводе в отчет даныы похожи на то, что я хочу
-
Anatoly Podgoretsky © (06.05.08 14:05) [12]> Kolan (06.05.2008 13:13:10) [10]
Так тебе и надо суммировать, а не приводить черт знае зачем, не нужные запросы.
Но похоже у тебя порушеная база.
Кроме того, убери ты это неявное соединение, сделай явное внутреннее. -
> Так тебе и надо суммировать, а не приводить черт знае зачем,
> не нужные запросы.
Да я просто не пойму как может сортировка повлиять на кол-во записей
> Но похоже у тебя порушеная база.
А как это проверить? Не должна была вроде.