Как составить запрос в MySQL?





Есть 2 таблицы.  В первой инфа о клиенте, во второй список заказов.
Нужно сделать выборку всех записей из первой таблицы + добавить колонку с кол-вом заказов от этого клиента (count).
Точка схождения таблиц ido второй таблицы = id клиента в первой таблице.
  • 8 июля 2009, 17:12
  • yorfer

Ответы (5)

RSS
+
0
cкорее где-то так, могут же быть клиенты не сделаввшие ни единого заказа.
select t1.*, t2.cnt
from table1 t1 LEFT outer join (select id, count(id) as cnt
                                            from table2
                                            group by id) t2
       on t1.id = t2.id
avatar

vzk

  • 12 июля 2009, 10:03
+
0
данных маловато, но как то так
select t1.id, t1.name, COUNT(*) AS qnt_order from
(select id,name from table1) AS t1 INNER JOIN
(select id from table2) AS t2 ON t1.id = t2.id
GROUP BY t1.id, t1.name
avatar

x-x-n-o-x-x

  • 14 июля 2009, 20:05
+
0
Для примера создал две такие таблицы:
create table clients (id INTEGER, description VARCHAR(255), PRIMARY KEY (id));
create table orders (id INTEGER, client_id INTEGER, description VARCHAR(255), PRIMARY KEY (id), KEY by_client (client_id));

Тогда такой запрос делает то что нужно:

select clients.id, clients.description, count(orders.id) as count from clients,orders where clients.id=orders.client_id group by clients.id;
avatar

gabychev

  • 20 июля 2009, 03:56
+
0
SELECT u.*, COUNT(o.*) AS Qnt_Ord
FROM table1 AS u, table2 AS o
WHERE u.id = o.ido
GROUP BY u.id
avatar

rasavchek

  • 30 июля 2009, 11:56
+
0
Зависит от того, в каком виде должны быть выборка. Оптимальнее будет сделать две полные выборки, а затем циклами определить для каждого клиента количество заказов.
avatar

richy

  • 10 июля 2009, 09:04

Вопрос закрыт