Ошибка #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)

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

Изменить: изменив SELECT * from users where users.email=calls.email в SELECT id from users where users.email=calls.email

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

2 ответа

Решение
where product.owner in (SELECT *

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

Попробуй это

 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 к вашим именам таблиц
Другие вопросы по тегам