Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Составление запроса


Автор: FelikZ 12.8.2011, 16:52
Есть две таблицы (t1, t2). В первой таблице уникальные ID (допустим товаров), во второй таблице ID этих же товаров, но могут повторятся.

Нужно выбрать следующие данные:
1. сколько ID из t1 не попали в t2
2. сколько ID из t1 попали в t2 один раз
3. сколько ID из t1 попали в t2 два и более раз

Как выбрать? smile Объем данных будет большой, так что выслушал бы советы по оптимизации. (если что скрипт будет на php)

Автор: Zloxa 12.8.2011, 17:05
Код

select case,count(*) cnt
from (
      select case when count(t2.id) = 0 then 'нет'
                  when count(t2.id) = 1 then 'один'
                  when count(t2.id) > 1 then 'более одного'
             end as case
      from t1
      left join t2 on t1.id = t2.id
      group by t1.id
      ) s 
group by case

Автор: rodnover 12.8.2011, 17:06
Не попал
Код

select distinct T1.ID
from T1
left join T2 on T2.ID = T1.ID
where T2.ID is null

один раз
Код

select T1.ID
from T1
inner join T2 on T2.ID = T1.ID
group by T1.ID
having count(T2.ID) = 1

много раз
Код

select T1.ID
from T1
inner join T2 on T2.ID = T1.ID
group by T1.ID
having count(T2.ID) > 1

Автор: FelikZ 15.8.2011, 09:49
Спасибо большое! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)