Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2010, 22:25
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

sql обединение
есть таблица предммета голосования с айди
таблица голосов с привязкой к айди предмета голосования.Нужно достать голоса за последние сутки и за месяц. обе таблицы достать по отдельности получается. а вот одним запросом нет.куда капать?
одним запросом пробывал достовать через юнион .....
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2010, 22:27
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,233

телепаты в отпуске
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2010, 22:59
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

когда вернться ? XDDD
Код:
foto (id,user)
golos (id,foto_id,kol,time)
kol - "цена" голоса 1,2,3,4....
голосовать можно каждые 8 часов.

Код:
select foto.id,count(kol) from foto
left join  golos on foto.id=golosa.foto_id
Код:
select foto.id,count(kol) from foto
left join  golos on foto.id=golosa.foto_id and golos.time BETWEEN $t1 and now()

всё работает всё замечателено но хочется одним запросом
Ответить с цитированием
  #4 (permalink)  
Старый 29.05.2010, 08:49
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

то есть вывод
таб1(номер, голоса всего1)
таб2(номер, голоса всего2)
надо соединить по номеру и получить
таб(номер, голоса всего1, голоса всего2)
Ответить с цитированием
  #5 (permalink)  
Старый 30.05.2010, 03:58
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

SELECT foto.id, COUNT(g1.kol), COUNT(g2.kol) FROM foto
LEFT JOIN golos AS g1 ON foto.id=g1.foto_id
LEFT JOIN golos AS g2 ON foto.id=g2.foto_id AND g2.time BETWEEN $t1 AND NOW()
Ответить с цитированием
  #6 (permalink)  
Старый 30.05.2010, 11:30
Аватар для cuberboy
Профессор
Отправить личное сообщение для cuberboy Посмотреть профиль Найти все сообщения от cuberboy
 
Регистрация: 20.07.2009
Сообщений: 202

count считает строки 8(((( а мне надо считать значения в этих строках .к тому же при нуле голосов, каунт будет считать нулл. 8(((

можно сделать

SELECT foto.id, sum(g1.kol), sum(g2.kol) FROM foto
LEFT JOIN golos AS g1 ON foto.id=g1.foto_id
LEFT JOIN golos AS g2 ON foto.id=g2.foto_id AND g2.time BETWEEN $t1 AND NOW()

но тут косяк при нуле голосов тоже 8 (((

Последний раз редактировалось cuberboy, 30.05.2010 в 11:35.
Ответить с цитированием
  #7 (permalink)  
Старый 30.05.2010, 13:22
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

cuberboy, а погуглить слабо, чтоли? К тому же Вы сами count в примере написали, а телепаты, как уже говорилось, в отпуске.
SELECT foto.id, SUM(IFNULL(g1.kol,0)), SUM(IFNULL(g1.kol,0)) FROM foto
LEFT JOIN golos AS g1 ON foto.id=g1.foto_id
LEFT JOIN golos AS g2 ON foto.id=g2.foto_id AND g2.time BETWEEN $t1 AND NOW()
Ответить с цитированием
  #8 (permalink)  
Старый 31.05.2010, 12:15
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

А чем UNION не устраивает ?

select foto.id,count(kol) from foto
left join golos on foto.id=golosa.foto_id
UNION
select foto.id,count(kol) from foto
left join golos on foto.id=golosa.foto_id and golos.time BETWEEN $t1 and now()
Ответить с цитированием
  #9 (permalink)  
Старый 31.05.2010, 14:14
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от cuberboy Посмотреть сообщение
надо соединить по номеру и получить
таб(номер, голоса всего1, голоса всего2)
DooMer, и как это сделать с помощью UNION?
Ответить с цитированием
  #10 (permalink)  
Старый 31.05.2010, 15:57
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

ой, чуть не заметил ) виноват
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск