2012-03-13 2 views
1

В следующем запросе пытаюсь получить одно изображение на категории# 1241 - Операнд должен содержать 1 колонку (ы)

SELECT l.* 
FROM (
    SELECT id AS category_id, 
      COALESCE(
      (
      SELECT * 
      FROM images li 
      WHERE li.category_id = dlo.id 

      ORDER BY 
         li.save_status DESC, li.category_id DESC, li.id DESC 
      LIMIT 1 
      ), 0) AS mid 
    FROM cats_imgs dlo where id='1' 
    ) lo 
JOIN images l 
ON  l.save_status = '3' 
    AND l.category_id >= lo.category_id 
    AND l.category_id <= lo.category_id 
    AND l.id >= lo.mid 

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

#1241 - Operand should contain 1 column(s) 

Любые идеи?

+2

замены '' * с помощью одного столбца для 'изображения li' – newtover

+0

Ничего себе, работал :) опубликуйте его как ответ plz –

ответ

0

У меня была аналогичная проблема. Ваш оператор выбора 3-го уровня (SELECT * FROM images li) должен вернуть одно значение, так как оператор выбора 2-го уровня (SELECT id AS category_id,COALESCE(...) ожидает только одно значение в своем держателе места.

Для моего случая это сработало. Вот я и усредненные данные из второй таблицы на основе (SecondBasis) до значений в одну минуту основе таблицы (MinuteBasis):

SELECT MinuteBasis.time, MinuteBasis.avg_t, MinuteBasis.avg_p,MinuteBasis.avg_t2, 
    (SELECT avg(SecondBasis.m1) 
    FROM SecondBasis 
    WHERE SecondBasis.time BETWEEN MinuteBasis.time AND addtime (MinuteBasis.time,'0 0:00:59')) 
    (SELECT avg(SecondBasis.m2) 
    FROM SecondBasis 
    WHERE SecondBasis.time BETWEEN MinuteBasis.time AND addtime (MinutBasis.time,'0 0:00:59')) 
FROM MinuteBasis 
WHERE MinuteBasis.time BETWEEN '2012-05-02 8:30:00' AND '2012-05-02 8:44:59' ; 
Смежные вопросы