Задавайте вопросы, мы ответим
Вы не зашли.
Помогите с запросом. Уже два дня сижу весь форум перерыл и интернет. Не могу составить.
Есть три таблицы.
-user-
user_id
parent_id
name
-schet-
id
user_id
-platez-
id
schet_id
summa
Запрос, нужно выбрать из таблицы Usera где parent_id = 1, затем получиться что то вроде этого:
user_id parent_id name
5 1 Ivan
6 1 Petr
8 1 Dima
Затем в таблице Schet находим пользователя с user_id = 5,6,8 к примеру:
id user_id
11 5
22 5
33 5
44 6
55 8
Затем передвигаемся в таблицу -platez-
id schet_id summa
1 11 50
2 22 50
3 33 10
4 44 0
5 55 20
Нужно написать одним запросом, так что бы получилось
ID Parent_ID Имя Сумма_Платежа
5 1 Иван 110
6 1 Петр 0
8 1 Дима 20
Объяснил как смог. Помогите, никак не могу написать такой запрос. Не знаю как там одним запросом это сделать. Опыта и знаний не хватает.
Отредактированно Grider (28.01.2013 20:35:11)
Неактивен
Grider написал:
Затем в таблице Schet находим пользователя с user_id = 5:
id user_id
1 5
2 5
3 5
Затем передвигаемся в таблицу -platez-
id schet_id summa
1 1 50
2 1 60
Почему в таблице Schet из трех значений id выбрана именно единица?
Неактивен
Неактивен
Вроде исправил
Неактивен
SELECT u.user_id, u.parent_id, u.name, sum(p.summa) FROM `user` u JOIN Schet s ON user_id=s.id JOIN platez p ON s.id=p.schet_id where parent_id=1 GROUP BY 1;
Извините после `user` u, Schet s, JOIN platez p, что эти буквы значат
Отредактированно Grider (28.01.2013 20:53:53)
Неактивен
алиасы, чтобы каждый раз не писать длинное название таблицы.
В данном случае опущено необязательное ключевое слово as. Полная форма - `user` as u,
Неактивен
Спасибо Вам, щас буду пробывать. Вы просто гуру SQL.
Вот так будет если написать полным кодом?
SELECT USER.user_id, USER.parent_id, USER.name, sum(PLATEZ.summa) FROM `user` as USER JOIN SСHET as ON user_id=SСHET.id JOIN PLATEZ as ON SСHET.id=PLATEZ.schet_id where parent_id=1 GROUP BY 1;
Отредактированно Grider (28.01.2013 21:06:49)
Неактивен
Нет. Какой смысл в записи "`user` as USER"?
Запись "SСHET as " синтаксически неверна.
Неактивен
Без алиасов будет так?
SELECT USER.user_id, USER.parent_id, USER.name, sum(PLATEZ.summa) FROM `user` JOIN Schet ON user_id=SСHET.id JOIN PLATEZ ON SСHET.id=PLATEZ.schet_id where parent_id=1 GROUP BY 1;
Неактивен
Да, только user ключевое слово и его нужно брать в обратные кавычки.
А зачем в одном месте писать имя таблицы маленькими, а в другом большими буквами?
Неактивен
Возможно phpMyadmin чувствителен к регистру.
Неактивен
В phpMyadmin отправляю в базу, пишет #1054 - Unknown column 'SСHET.id' in 'on clause'
Неактивен
Да, вы правы, phpMyadmin чувствителен к регистру.
Неактивен
vasya добрый день.
Спасибо, я разобрался конечный у меня получился вот так:
Отредактированно Grider (29.01.2013 09:37:08)
Неактивен
Думаю не ошибусь, если скажу, что он работает не правильно
Неактивен
Возвращает то что я хотел. Вроде все нормально
Неактивен
Вы хотели получить три строки:
5 1 Иван 110
6 1 Петр 0
8 1 Дима 20
А ваш запрос
SELECT user.id, user.parent_id, user.name, sum( platez.summ )
FROM `user`
JOIN schet ON schet.user_id = user.id
JOIN platez ON platez.schet_id = schet.id
WHERE user.parent_id =1
вернет только одну с суммой в 130.
Неактивен
Он же не группирует по user.parent_id, или я ошибаюсь?
Неактивен
Не знаю, не знаю. Но он возвращает мне именно так:
5 1 Иван 110
6 1 Петр 0
8 1 Дима 20
Все равно спасибо vasya.
Неактивен