2013-03-29 3 views
-1

Возможно, кто-нибудь поможет в этом вопросе:Как решить этот запрос?

Список всех клиентов с несколькими метрами.

Я полный Newb так что простите меня, если это легкая задача решить ..

Customers – minimum 20 records 
Meters – min. 30 records 
Meter Readings – min. 100 readings 
Invoices – 1 per Meter Reading 

Я попытался следующий запрос без успеха ...

select * 
from Customers 
LEFT OUTER JOIN Meters ON Customers.idCustomers = Meters.Customers_idCustomers 
where Customers.idCustomers = Customers.idCustomers; 

I также попытались выполнить запросы SELECT CASE

Спасибо!

+1

Какова структура ваших данных? – 2013-03-29 21:52:49

+0

Что именно вы пытаетесь сделать? Найдите все записи 'Customers', которые содержат более одной записи' Meters', связанной с ними? Как выглядят таблицы? – zajd

+0

Это зависит от структуры базы данных, но одно общее решение - это внутреннее объединение с 'group by' и' having count (*)> 1' – theglauber

ответ

1

Вот один из способов:

select c.* 
from customers c 
where c.idCustomer in (select idCustomer 
         from Meters 
         group by Customers_idCustomers 
         having count(*) > 1 
        ) 

В MySQL, можно также выразить это как присоединиться к группе:

select c.* 
from customers c join 
    meters m 
    on c.idCustomer = m.Customers_idCustomer 
group by c.idCustomer 
having count(*) > 1 
+0

Спасибо за быстрые ответы, действительно оцените его, в результате моя проблема был разрешен с помощью следующего кода: SELECT *, COUNT (*) ОТ клиентов ВХОДНЫЕ ВХОДЫ МЕТРОВ ON Customers.idCustomers = Meters.Customers_idCustomers GROUP BY Customers.idCustomers HAVING COUNT (*)> 1; – tercou1

0

Вот где GROUP BY статьи приходит!

select customers.*, count(*) meter_count 
from customers 
inner join meters on customers.idCustomer = meters.idCustomer 
group by customers.idCustomer 
having meter_count > 1 
Смежные вопросы