SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.10.2013 01:01:49

sql007
Участник
Зарегистрирован: 30.10.2013
Сообщений: 4

SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

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

Неактивен

 

#2 30.10.2013 01:07:25

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

sql007 написал:

c первыми двумя таблицами знаю как , а вот как с третьей сделать никак.

А что значит "никак"? Покажите запрос, который с первыми двумя работает

sql007 написал:

то есть что бы выводились да же те строки ID которых нет в tb3

Смотрите в сторону Left JOIN where t3.id IS NULL


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 30.10.2013 01:14:01

sql007
Участник
Зарегистрирован: 30.10.2013
Сообщений: 4

Re: SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

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)

Неактивен

 

#4 30.10.2013 01:26:07

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

FAQ №16

select tb1.*, sum(tb3.p1) from tb1 left join tb3 on tb1.id=tb3.tb1id group by tb1.id;

Неактивен

 

#5 30.10.2013 02:32:19

sql007
Участник
Зарегистрирован: 30.10.2013
Сообщений: 4

Re: SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

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 лямов.

Неактивен

 

#6 30.10.2013 02:40:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

Не понял ваш последний пост, оба приведенных вами запроса синтаксически неверные.

Неактивен

 

#7 30.10.2013 02:54:17

sql007
Участник
Зарегистрирован: 30.10.2013
Сообщений: 4

Re: SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

vasya написал:

Не понял ваш последний пост, оба приведенных вами запроса синтаксически неверные.

Ок, поясняю. Это работает select tb1.*, sum(tb3.p1) from tb1 left join tb3 on tb1.id=tb3.tb1id group by tb1.id;

но если я хочу в этот запрос добавить в вывод tb2.p1  то конструкция уже не работает. то есть получить в итоге вывод из 3х таблиц. как было в первом моем посте

Неактивен

 

#8 30.10.2013 02:57:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: SELECT из 3х таблиц с суммированием нужного поля по одинаковому ID

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;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson