2013-06-05 3 views
3

Я просто пытаюсь следующий запрос:Error # 1241 - Операнд должен содержать 1 столбец (ы) в Mysql

SELECT *, 
     (
     SELECT count(*) 
     FROM users 
     where users.email=calls.email 
    ) as ureg, 
     (
     SELECT sum(qty) 
     FROM product 
     where product.owner in 
      (SELECT * 
      from users 
      where users.email=calls.email) 
    ) as pop 
FROM calls 
order by calls.data desc 
LIMIT 0,20 

, но я получаю следующую ошибку:

#1241 - Operand should contain 1 column(s) 

Как исправить мой запрос?

Edit: путем изменения SELECT * from users where users.email=calls.email к SELECT id from users where users.email=calls.email

это работает, потому что поиски запроса для product.owner в кучу id с, которые существуют у пользователей

+1

Не могли бы вы форматировать запрос с переносами? –

+0

путем изменения: SELECT * от пользователей, где users.email = calls.email – dpfarhad

ответ

17
where product.owner in (SELECT * 

product.owner является один столбец, поэтому подзапрос должен возвращать один столбец (что соответствует product.owner).

0

попробовать это

SELECT calls.*, count(users.*) as ureg, sum(twons.qty) as pop 
FROM calls 
INNER JOIN users ON users.email=calls.email 
INNER JOIN towns ON towns.id = users.town 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^--you have to correct this to your table column names 
    order by data desc 
    LIMIT 0,20 
  • вы должны исправить эту ON towns.id = users.town в таблицы имен
Смежные вопросы