У меня есть 3 таблицы, которые выглядят следующим образом:MySQL Как подсчитать несколько записей, сохраняя при этом уникальные fileds
acc_prop
id | pid | uid
1 | 10 | 1
2 | 11 | 1
3 | 12 | 1
кал
id | pid
1 | 10
2 | 11
3 | 12
цена
cid | rate
1 | 100
2 | 99
3 | 130
Я хочу создать запрос, который возвращает pid, счетчик uid с тем же uid и скорость для этого pid.
ожидаемый результат
pid | uid_count | rate
10 | 3 | 100
11 | 3 | 99
12 | 3 | 130
мой запрос выглядит следующим образом
SELECT
cal.pid,
count(ap3.uid) as uid_count,
price.rate
FROM
price
JOIN
cal on cal.id = price.cid
JOIN
acc_prop ap using(pid)
JOIN
acc_prop ap2 on ap2.uid = ap.uid
JOIN
acc_prop ap3 on ap3.uid = ap2.uid
group by ap3.pid;
Но она возвращает
- неправильный подсчет
- некорректный PID список
- неверная скорость
фактический результат
pid | uid_count | rate
10 | 9 | 100
10 | 9 | 100
мы должны 'cal' вообще здесь делать? К сожалению, имена таблиц и имена внешних ключей не являются особенно интуитивными, поэтому его трудно представить в виде соединений. – StuartLC
Не совсем, это просто базовое сокращение для примера. Но в моей реальной системе есть таблица cal, которая связывает pid с другими таблицами. В основном cal - это календарь, pid - свойствоId, а uid - userId. acc_prop - это таблица, которая связывает userId's с PropertyId's – dunsta