Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > SQL из двух таблиц


Автор: xrc2 22.9.2010, 00:46
Код

Table1 - Users

ID       Name
-----    -----------
1        User1
2        User2
3        User3
4        User4


Table2 - Orders

ID      UserID
----    ----------
1       1
2       1
3       2
4       1
5       2


Нужно вывести статистику по каждому пользователю (Table1), сколько заказов сделал каждый пользователь.

Получилось вывести всех пользователей которые существуют в Table2 (т.е. User3, User4 не видны - а нужно чтоб были видны):
Код


select Table1.Name, Count(*) as Orders from Table1, Table2 where Table1.ID=Table2.UserID group by Table1.ID, Table2.UserID


вот думаю может нужно смотреть в сторону Union'ов?

Автор: Deniz 22.9.2010, 05:13
xrc2, приведенный запрос должен выдавать ошибку.
Смотреть нужно в сторону left join

Автор: Zloxa 22.9.2010, 09:37
Цитата(Deniz @  22.9.2010,  05:13 Найти цитируемый пост)
должен выдавать ошибку

вероятно речь идет о mySql. В этом отношении он особенный.
xrc2, 
Код

select min(Table1.Name) name, Count(*) as Orders from Table1 left join Table2 on Table1.ID=Table2.UserID group by Table1.ID

Автор: xrc2 22.9.2010, 10:14
Цитата(Zloxa @ 22.9.2010,  07:37)
Цитата(Deniz @  22.9.2010,  05:13 Найти цитируемый пост)
должен выдавать ошибку

вероятно речь идет о mySql. В этом отношении он особенный.
xrc2, 
Код

select min(Table1.Name) name, Count(*) as Orders from Table1 left join Table2 on Table1.ID=Table2.UserID group by Table1.ID

Спасибо Zloxa вы правы - работает!
База используется sqlite.
Только я не совсем понял зачем там нужен min?

Автор: Deniz 22.9.2010, 10:48
Цитата(Zloxa @  22.9.2010,  11:37 Найти цитируемый пост)
вероятно речь идет о mySql. В этом отношении он особенный.
Да уж, очень особенный, люди даже перестают понимать для чего group by нужен. Но все же это не mySql.

xrc2, приведенный в первом примере запрос на sqlite работает?
Цитата(xrc2 @  22.9.2010,  12:14 Найти цитируемый пост)
Только я не совсем понял зачем там нужен min?
не нужен - убери

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