Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2013, 08:49   #11
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

Код:
SELECT name, SUM( akter ) AS akt, SUM(regiser ) AS reg
FROM(SELECT name.fullname AS Name, 1 AS akter, 0 AS regiser
FROM film_akter fa
JOIN name ON fa.akter = name.id
UNION
SELECT name.fullname AS Name, 0 AS akter, 1 AS regiser
FROM film_regiser fr
JOIN name ON fr.regiser = name.id) as t
выводит такое


Код:
name name1
akt 9
reg 4
а хочу получить что б было
Код:
name name1
akt 1
reg 1

name name2
akt 1
reg 0

и тд для всех имен
как бы если имя числится как актер то 1 в столбце актер, если как режиссер то тоже 1
если нет то 0
что не так делаю?
SonicBob вне форума Ответить с цитированием
Старый 22.07.2013, 03:32   #12
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

так и не разобрался как объединить результаты 2х запросов что б выглядели как один
максимум что получилал это что б одно и тоже имя шло рядом а не так что б обьеденить эти результаты
SonicBob вне форума Ответить с цитированием
Старый 23.07.2013, 11:49   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы хотите статистику по именам получить,
Имя ЧислоСколькоРазБылАктёром ЧислоСколькоРазБылРежисёром
так?

Ну, запрос у Вас вполне себе пригодный.
попробуйте только изменить его чуток.
Вот так:
Код:
SELECT t.name, SUM( t.akter ) AS akt, SUM(t.regiser ) AS reg
FROM 
  (SELECT name.fullname AS Name, 1 AS akter, 0 AS regiser
    FROM film_akter fa
    JOIN name ON fa.akter = name.id
   UNION ALL
   SELECT name.fullname AS Name, 0 AS akter, 1 AS regiser
   FROM film_regiser fr
   JOIN name ON fr.regiser = name.id) as t
GROUP BY t.name
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.07.2013, 05:47   #14
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

почти, я хотел что б значения цифр были только 0 и 1, это мои флаги для дальнейшей работы. вот что и не получается
SonicBob вне форума Ответить с цитированием
Старый 24.07.2013, 08:27   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

0 в поле akt - это если персона ни разу не встречается в качестве актёра,
1 в поле akt - это если персона встречается в качестве актёра хотя бы раз ?

ну и reg поле аналогично?

это несложно.
пробуйте так:
Код:
SELECT t.name, MAX( t.akter ) AS akt, MAX(t.regiser ) AS reg
FROM 
  (SELECT name.fullname AS Name, 1 AS akter, 0 AS regiser
    FROM film_akter fa
    JOIN name ON fa.akter = name.id
   UNION ALL
   SELECT name.fullname AS Name, 0 AS akter, 1 AS regiser
   FROM film_regiser fr
   JOIN name ON fr.regiser = name.id) as t
GROUP BY t.name
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.07.2013, 08:38   #16
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

да точно, не знал про функцию Max
спасибо большое =)
SonicBob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL - Объединить запросы Dexes SQL, базы данных 4 19.08.2014 16:47
MYSQL + delphi (запросы) Devolarium БД в Delphi 23 25.12.2012 22:46
не работают запросы к БД fifa068 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 21.12.2012 22:18
Динамические запросы в MySQL kuzjma SQL, базы данных 0 09.12.2011 13:58
Mysql запросы Lerank Помощь студентам 1 22.11.2010 18:00