SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.05.2016 05:10:41

Evgen74
Участник
Зарегистрирован: 01.05.2016
Сообщений: 2

Кол-во новых сообщений от пользователя

Здравствуйте.

Имеем 4 таблицы:
Остави
1. Пользователи (2 группы. Гостиница и Агентство)
Гостиница имеет базы, Агентство может выбрать с какими базами работать.
USERS:
id | name | group_id

2. Базы отдыха
BASE:
id | user_id | name | geo

3. Базы которые выбрало Агентство
BASE_FOR_AGENCY:
user_id | base_id

4. Таблица сообщений между пользователями
MESSAGES:
id | user_from | user_to | message | dateTime | new

1. Поучаем все Агентства которые работают с Гостиницой ID 30


SELECT `users`.`name`
FROM `users`
JOIN `base` ON `base`.`id_user` = "30"
JOIN `base_for_agency` ON `base_for_agency`.`id_base` = `base`.`id`
WHERE `users`.`id` = `base_for_agency`.`id_user`
GROUP BY `users`.`id`
LIMIT 100
 


ОК с эти проблем нет.

Не получается подтянуть в результат кол-во новых от Агентства сообщений (ПОЛЕ new = 1) из таблицы MESSAGES
То есть? можно ли в результат добавить:

SELECT count(*)
FROM `messages`
WHERE `user_to` = "30" AND `new` = 1 AND от Агентств которые получаем в запросе выше
 


Спасибо

Неактивен

 

#2 01.05.2016 22:30:14

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Кол-во новых сообщений от пользователя

SELECT `users`.`name`, (select count(*) FROM `messages` WHERE `user_to` = "30" AND `new` = 1 AND user_from=users.id) as count_new
FROM `users`
JOIN `base` ON `base`.`id_user` = "30"
JOIN `base_for_agency` ON `base_for_agency`.`id_base` = `base`.`id`
WHERE `users`.`id` = `base_for_agency`.`id_user`
GROUP BY `users`.`id`
LIMIT 100


или

SELECT count(*) as count_new, t.name
FROM `messages` join
(SELECT `users`.`name`, users.id
FROM `users`
JOIN `base` ON `base`.`id_user` = "30"
JOIN `base_for_agency` ON `base_for_agency`.`id_base` = `base`.`id`
WHERE `users`.`id` = `base_for_agency`.`id_user`
GROUP BY `users`.`id`
LIMIT 100) as t on user_from = t.id
WHERE `user_to` = "30" AND `new` = 1;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson