Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL из двух таблиц 
:(
    Опции темы
xrc2
Дата 22.9.2010, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.5.2008

Репутация: нет
Всего: нет



Код

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'ов?
PM MAIL   Вверх
Deniz
Дата 22.9.2010, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 7
Всего: 44



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


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Zloxa
Дата 22.9.2010, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 11
Всего: 161



Цитата(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 - 22.9.2010, 09:39


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
xrc2
Дата 22.9.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.5.2008

Репутация: нет
Всего: нет



Цитата(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?
PM MAIL   Вверх
Deniz
Дата 22.9.2010, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 7
Всего: 44



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

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


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.