Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SQL запрос, непрочитанная новость пользователя

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
nepster
Отправлено: 11 Августа, 2013 - 21:33:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 195
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Подскажите пожалуйста как решить такую задачу. Собственно попал в тупик.

Есть 2 таблицы, новости и статистика чтения новостей.

Есть новости обязательные для чтения, тоесть пока пользователь не прочитает новость (внизу новости не тыкнет кнопку "я прочитал") его не нужно никуда пускать.

Таблицы:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE IF NOT EXISTS `news` (
  3.   `news_id` int(11) NOT NULL AUTO_INCREMENT,
  4.   `user_id` int(11) NOT NULL DEFAULT '0',
  5.   `category_id` int(11) NOT NULL DEFAULT '0',
  6.   `news_title` varchar(200) NOT NULL,
  7.   `news_description` varchar(200) NOT NULL,
  8.   `news_keywords` varchar(200) NOT NULL,
  9.   `news_name` varchar(200) NOT NULL,
  10.   `news_short` text NOT NULL,
  11.   `news_full` text NOT NULL,
  12.   `news_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  13.   `news_status` tinyint(4) NOT NULL DEFAULT '1',
  14.   `must_read` tinyint(4) NOT NULL DEFAULT '0',
  15.   PRIMARY KEY (`news_id`)
  16. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
  17.  
  18.  
  19. CREATE TABLE IF NOT EXISTS `news_read` (
  20.   `news_id` int(11) NOT NULL DEFAULT '0',
  21.   `user_id` int(11) NOT NULL DEFAULT '0',
  22.   `read_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  23.   `read_status` tinyint(4) NOT NULL DEFAULT '0',
  24.   `news_view` tinyint(4) NOT NULL DEFAULT '0',
  25.   UNIQUE KEY `news_id` (`news_id`,`user_id`)
  26. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;



Собственно на чем застрял, нужно достать 1 новость по дате, которую не читал пользователь
 
 Top
Саныч Модератор
Отправлено: 11 Августа, 2013 - 21:46:52
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM `news`
  3. WHERE `news_id` NOT IN (
  4.     SELECT DISTINCT `news_id`
  5.     FROM `news_read`
  6.     WHERE `user_id` = :user_id
  7. ) AND
  8.     `user_id` = :user_id AND
  9.    `news_date` = :news_date


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
imya
Отправлено: 11 Августа, 2013 - 22:03:55
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM news
  3. JOIN (SELECT DISTINCT news_id FROM news_read WHERE user_id = $_GET['id']) AS _read
  4.         ON news.news_id = _read.news_id
  5.         WHERE _read.read_date < NOW()


?


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
nepster
Отправлено: 11 Августа, 2013 - 22:07:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 195
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




больше спасибо все сработало
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB