2016-03-14 2 views
0

Возможно ли дать псевдоним объединенной таблицы в MySQL? НапримерДайте псевдоним зарегистрированной таблице MySQL

Select * 
From Customers 
Natural Join Transaction as CT 
Where (Select Count(CT.Customer_ID)) >= 2 

Would CT ссылки присоединяемой таблицы или таблицы транзакций? И если он ссылается на таблицу транзакций, как мне ссылаться на объединенную таблицу в подзапросе?

+0

Насколько я знаю, каждый алиас должен быть уникальным, поэтому CT будет трансаксом . – Jhecht

+0

Просьба предоставить данные о выборке и ожидаемые результаты ... – sgeddes

+0

Захватить всех клиентов, у которых есть 2 или более транзакции – timothyjosefik

ответ

4

Нет, вы не можете сделать это в MySQL. В других базах данных для этой цели вы можете использовать CTE. (И в любой базе данных вы можете использовать временную таблицу, но это не является хорошим решением.)

Примечание: Не используйте natural join. Это ошибка, ожидающая своего появления.

Чтобы выразить свой запрос, используйте либо предложение ON, либо USING. Для вашего запроса, это будет что-то вроде этого:

Select c.*, ct.* 
From Customers c Join 
    Transaction as CT 
    ON c.Customer_ID = CT.Customer_ID JOIN 
    (select t2.Customer_ID, count(*) as cnt 
     from Transaction t 
     group by t2.CustomerId 
     where cnt >= 2 
    ) cct 
    ON cct.Customer_ID = cct.Customer_Id; 
1

Основываясь на ваш комментарий:

захватить все клиенты, которые имеют 2 или больше сделок

Вот один вариант использования exists:

select * 
from customers c 
where exists (
    select 1 
    from transaction t 
    where c.customerid = t.customerid 
    having count(*) > 1 
) 
+0

Спасибо, я отмечаю другое как ответ, потому что он более общий – timothyjosefik