У меня есть несколько таблиц. Таблицы и запрос MySQL можно найти в этом demo.MySQL возвращает неверные данные с использованием соединения
Эти таблицы:
пользователи
id name 1 abc 2 xyz 3 pqr
друг
user_id friend_id 1 2 1 3 2 3
коллекция
id user_id friend_id amount 1 1 2 100 2 2 1 -100 3 2 3 200 4 3 2 -200 5 1 3 300 6 3 1 -300
законопроект
id use_id(bill_creator) 1 1 2 2 3 2
bill_person
id bill_id user_id 1 1 1 2 1 2 3 1 3 4 2 2 5 2 3 6 3 2 6 3 1
Так Пока я сделал этот запрос:
SELECT mf.id
, mf.name
, c.amount AS amount,count(bp.user_id) AS no_common_bills
FROM (
SELECT fr.user_id AS user_id
, fr.friend_id AS friend_id
FROM friend fr
JOIN users fru
ON fru.id = fr.user_id
WHERE fru.id IN (1)
UNION
SELECT fl.friend_id AS user_id
, fl.user_id AS friend_id
FROM friend fl
JOIN users flf
ON flf.id = fl.friend_id
WHERE flf.id IN (1)
) f
JOIN users mf
ON mf.id = f.friend_id
LEFT
JOIN collection c
ON c.friend_id = mf.id
AND c.user_id = f.user_id
LEFT JOIN bill_person bp
ON bp.user_id=f.user_id AND c.friend_id = mf.id
GROUP BY mf.id
ORDER BY mf.id
и мой выход этого запроса
id NAME AMOUNT NO_COMMON_BILLS
2 XYZ 100 2
3 PQR 300 2
, но я хочу этот результат:
id NAME AMOUNT NO_COMMON_BILLS
2 XYZ 100 2
3 PQR 300 1
Я получаю неправильный выход на NO_COMMON_BILLS. Кроме этого, все значения верны.
Пожалуйста, добавьте схему и данные здесь вместо того, чтобы просто SQLFiddle ссылку. – hims056
@ hims056: у меня слишком много таблиц, поэтому я сделал SQLFiddle, чтобы сделать его проще. –
Но что, если сайт sqlfiddle не работает? – hims056