Нужна помощь. Туплю с запросом

akxxiv

Новичок
Нужна помощь. Туплю с запросом

Приветствую, что-то я туплю с запросом:

Есть 3 таблицы:

- running_schedules (rs) - таблица маршрутных листов (МЛ)
- waybills (wb) - Таблица накладных. Связь с rs многие к одному ( wb.rs_id=rs.id )
- rs_way (rsw) - Таблица связиМЛ с городами. Один МЛ может иметь несколько городов. Структура простая ( rs_id | city_id )

Так вот имеем МЛ с номером 262. Это МЛ едет в 3 города и везет с собой 53 накладных. Так вот хочу одним запросом определить сколько городов в МЛ, сколько в нем накладных, и каков вез груза (который указывается в каждой накладной). Итак делаю запрос:

PHP:
SELECT rs.id, COUNT(wb.id), SUM( wb.weight_real ) AS rs_weight, COUNT(rsw.city_id)
FROM running_schedules rs
LEFT JOIN waybills wb ON wb.rs_id = rs.id
LEFT JOIN rs_way rsw ON rsw.rs_id = rs.id
WHERE rs.id =262
GROUP BY rs.id
И что получаю:
- Количество городов 159 (3*53)
- Количество накладных 159 (3*53)
- вес тоже помноженный

Как бы его переписать, чтобы он схлопывал лишние данные.???
 

akxxiv

Новичок
Потому что в реальной ситуации запрос выполняется без rs_id=262, это я для упрощения понимания сделал только для одного МЛ, В реалии там список из сотни МЛ и для каждого нужно это сделать, кроме того там еще ряд подобных JOIN-ов.
 

Gas

может по одной?
COUNT(DISTINCT ...)
ну а SUM, не помню будет ли работать конструкция вида:

SUM( wb.weight_real ) / COUNT(DISTINCT rsw.city_id)
 
Сверху