Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
tb1
------------------------------
ID поле1 поле2
1 a 22
2 b 33
3 c 44
tb2
______________________
ID tb1ID поле1
1 1 55
2 2 33
3 3 22
tb3
_______________________
ID tb1ID поле1
1 1 4
2 2 2
3 1 3
4 2 2
5 1 6
Подскажите как написать запрос SELECT
c первыми двумя таблицами знаю как , а вот как с третьей сделать никак.
как мне такой запрос написать, что бы получить такой вывод?
tb1.ID tb1.поле1 tb1.поле2 tb2.поле1 tb3.поле1
=================================
1 a 22 55 13 (то есть здесь сумма поллей поле1 из tb3 где tb1.ID = tb3.tb1ID)
2 b 33 33 4 (то есть здесь сумма поллей поле1 из tb3 где tb1.ID = tb3.tb1ID)
3 c 44 22 0 (или NULL)
то есть что бы выводились да же те строки ID которых нет в tb3
Неактивен
sql007 написал:
c первыми двумя таблицами знаю как , а вот как с третьей сделать никак.
А что значит "никак"? Покажите запрос, который с первыми двумя работает
sql007 написал:
то есть что бы выводились да же те строки ID которых нет в tb3
Смотрите в сторону Left JOIN where t3.id IS NULL
Неактивен
deadka написал:
sql007 написал:
c первыми двумя таблицами знаю как , а вот как с третьей сделать никак.
А что значит "никак"? Покажите запрос, который с первыми двумя работает
sql007 написал:
то есть что бы выводились да же те строки ID которых нет в tb3
Смотрите в сторону Left JOIN where t3.id IS NULL
никак , это я не знаю как составить запрос с суммированием из 3й таблици.
Просто дернуть поле из второй таблици легко. а вот как из 3й что бы сумма поллей поле1 из tb3 где tb1.ID = tb3.tb1ID
вот это не знаю как
пробовл SUM но тогда мне выводится одна строка и в нужном поле просто все суммировано
Отредактированно sql007 (30.10.2013 01:14:56)
Неактивен
vasya написал:
FAQ №16
select tb1.*, sum(tb3.p1) from tb1 left join tb3 on tb1.id=tb3.tb1id group by tb1.id;
да так работает, НО как только я добавляю к примеру tb2
select tb1.*, tb2.f1, sum(tb3.p1) from tb1,tb2 left join tb3 on tb1.id=tb3.tb1id group by tb1.id
where tb1.id = tb2.tb1id;
или
select tb1.*, sum(tb3.p1) from tb1 left join tb3 on tb1.id=tb3.tb1id group by tb1.id
where tb1.id > 2;
уже результат не тот, выводится в моей базе 10 лямов записей, выводится всего первые 2 и нужное поле суммируется со всеми из 10 лямов.
Неактивен
Не понял ваш последний пост, оба приведенных вами запроса синтаксически неверные.
Неактивен
vasya написал:
Не понял ваш последний пост, оба приведенных вами запроса синтаксически неверные.
Ок, поясняю. Это работает select tb1.*, sum(tb3.p1) from tb1 left join tb3 on tb1.id=tb3.tb1id group by tb1.id;
но если я хочу в этот запрос добавить в вывод tb2.p1 то конструкция уже не работает. то есть получить в итоге вывод из 3х таблиц. как было в первом моем посте
Неактивен
http://dev.mysql.com/doc/refman/5.5/en/join.html
select tb1.*, tb2.p1, sum(tb3.p1) from tb1 join tb2 on tb1.id=tb2.tb1id left join tb3 on tb1.id=tb3.tb1id group by tb1.id;
Неактивен
Страниц: 1