Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Количество строк в другой таблице. И ошибка #1054 - Unknown column 'activate' in 'where clause'
 
 автор: deltamc   (14.02.2014 в 16:12)   письмо автору
 
 

Есть две таблицы:
CREATE TABLE `shop_coupons` (
  `id_coupon` int(11) NOT NULL AUTO_INCREMENT,
  `key` varchar(255) NOT NULL,
`discount `  double NOT NULL,
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251;

И
CREATE TABLE `shop_coupons_user` (
  `id_coupon` int(11) NOT NULL,
  `id_user` int(11) NOT NULL,
  `id_order` int(11) NOT NULL
) ENGINE= MyISAM  DEFAULT CHARSET=cp1251;


Задача такая: нужно вывести активированные купоны из таблицы shop_coupons (если есть запись в таблице shop_coupons_user, то купон считается активированным).
То есть нужно вывести купоны, о которых нет записей в таблице shop_coupons_user.

Делаю запрос:
SELECT shop_coupons.*,
    (SELECT COUNT(*) FROM shop_coupons_user WHERE shop_coupons_user.id_coupon=shop_coupons.id_coupon) AS  `activate`
  FROM shop_coupons

Выводит купон + количество записей в таблице shop_coupons_user с этим купоном.
При попытки указать условие:
SELECT shop_coupons.*,
    (SELECT COUNT(*) FROM shop_coupons_user WHERE shop_coupons_user.id_coupon=shop_coupons.id_coupon) AS  `activate`
  FROM shop_coupons WHERE `activate` > 0

Почему-то выдает ошибку:
#1054 - Unknown column 'activate' in 'where clause'


Прошу помочь с данной задачей, заранее благодарен.

  Ответить  
 
 автор: Valick   (14.02.2014 в 17:52)   письмо автору
 
   для: deltamc   (14.02.2014 в 16:12)
 

а COUNT(*) тут вообще к чему?
у вас тут два варианта, либо использовать JOIN либо NOT IN
если я правильно понял что вы хотите вывести

речь о неактивированных (NOT IN) купонах? или об активированных (IN) ?
хм.. у вас один купон может принадлежать нескольким пользователям и надо вывести и количество?

попробуйте WHERE заменить на HAVING

  Ответить  
 
 автор: deltamc   (17.02.2014 в 12:59)   письмо автору
 
   для: Valick   (14.02.2014 в 17:52)
 

Спасибо, получилось.

Сделал так:

SELECT * FROM shop_coupons WHERE  id_coupon NOT IN(SELECT id_coupon FROM shop_coupons_user)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования