SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 28.07.2010 10:36:52

ad1r
Участник
Зарегистрирован: 28.07.2010
Сообщений: 7

запрос на выборку из 3х таблиц

Вопрос следующий необходимо выбрать из 3х таблиц данные, с подсчетом количества по третьей таблице. То есть, на примере:

3 таблицы
accounts (id_account, login, password)
accounts_contacts (id_account, icq, phone)
orders (id_order, header, text, id_account)

результат выборки должен содержать (id_account, login, password, icq, phone, COUNT_OF_ORDERS), заметим появляется поле COUNT_OF_ORDERS - это количество заявок созданных каждым пользователем.

сейчас делаю запрос, который выводит инфу только из 2х таблиц (из accounts и orders)
select   
                  `accouunts`.*,
                   count(distinct `orders`.`id_order`) as COUNT_OF_ORDERS
from         
                   `accounts`
left join     
                   `orders` on `accounts`.`id_account`=`orders`.`id_account`
group by 
                   `accounts`.`id_account`

результатом этого запроса получаю таблицу  (id_account, login, password, COUNT_OF_ORDERS) вместо НЕОБХОДИМОЙ таблицы  (id_account, login, password, icq, phone, COUNT_OF_ORDERS).

подскажите пожалуйста как изменить данный запрос?

Неактивен

 

#2 28.07.2010 11:18:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: запрос на выборку из 3х таблиц

Ну, допишите еще один JOIN?

Неактивен

 

#3 28.07.2010 11:47:08

ad1r
Участник
Зарегистрирован: 28.07.2010
Сообщений: 7

Re: запрос на выборку из 3х таблиц

Спасибо) получилось, привожу код запроса, возможно, кому нибудь будет полезным


select  
                  `accouunts`.*,
                   count(distinct `orders`.`id_order`) as COUNT_OF_ORDERS,
                   `accounts_contacts`.`icq`,  `accounts_contacts`.`phone`
from        
                   `accounts`
left join    
                   `orders` on `accounts`.`id_account`=`orders`.`id_account`
left join    
                   `accounts_contacts` on `accounts`.`id_account`=`accounts_contacts`.`id_account`
group by
                   `accounts`.`id_account`
 

Неактивен

 

#4 31.07.2010 19:39:28

metalpriest
Участник
Зарегистрирован: 31.07.2010
Сообщений: 2

Re: запрос на выборку из 3х таблиц

Похожий вопрос:
три таблицы
pursache(pursache_id, product_id, ...)
limits(limit_id, pursache_id, attribute_id, count)
orders(order_id,pursache_id, limit_id, count, ...)
pursache связан с limits как 1:m
pursache свяан с orders как 1:m

результат должен содержать (pursache_id, product_id, LIMITS_COUNT, ORDERS_COUNT)
где LIMITS_COUNT сумма по полю count в таблице limits,
ORDERS_COUNT сумма по полю count в таблице orders

можно так сделать одним запросом?

Неактивен

 

#5 01.08.2010 02:27:54

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

Re: запрос на выборку из 3х таблиц

SELECT pursache_id, product_id, (SELECT sum(count) FROM limits l WHERE l.pursache_id=p.pursache_id) as LIMITS_COUNT, (SELECT sum(count) FROM orders o WHERE o.pursache_id=p.pursache_id) as ORDERS_COUNT FROM pursache p;

Неактивен

 

#6 01.08.2010 15:29:24

metalpriest
Участник
Зарегистрирован: 31.07.2010
Сообщений: 2

Re: запрос на выборку из 3х таблиц

Спасибо

Неактивен

 

Board footer

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