проблемма с алиасами

slip

Guest
проблемма с алиасами

Подскажите почему скрипт выдает ошибку
Unknown column 'sums' in 'where clause'

в запросе:

select * FROM users_data,
zakaz,
sklad,
otgruzka,
(SELECT zakaz.koli_izdelii_zak_kl, sklad.kolvo, otgruzka.kolvo_ot, SUM(zakaz.koli_izdelii_zak_kl-sklad.kolvo-otgruzka.kolvo_ot)
FROM zakaz, sklad, otgruzka GROUP BY zakaz.koli_izdelii_zak_kl) sums
WHERE zakaz.${sel} LIKE '%${what}%'
AND zakaz.username = users_data.user
AND users_data.type = 'user'
AND sums > 0

вроде все верно написано, алиас sums задать через AS, та же фигня...почему?

И еще вопрос ради интереса, без вложенных селектов это можно сделать?
Спасибо.
 

Nirva

Dmitry Polyakov
1. первые это значения, а подзапрос - набор никак не связаный с первыми. ты это как себе представляешь?

2. давай-ка лучше ты приведешь структуру и скажешь, что тебе нужно в итоге получить?

p.s. http://dev.mysql.com/doc/mysql/en/subqueries.html
 

slip

Guest
1. где то увидел пример, не верный по ходу, но щас я уже понял что это пишется после WHERE с каким нибудь условием,
пока не могу понять какое это должно быть условие или как сделать по другому...:)
2. Мне нужно от zakaz.koli_izdelii_zak_kl отнять sklad.kolvo и otgruzka.kolvo_ot вывести результат все если будет больше 0 (ноль)

Вот понимаю как, а написать не могу :) Посмотрел мануал, все равно не очень понятно как сделать...получается что то типа

select * FROM users_data,
zakaz,
sklad,
otgruzka,
WHERE
(SELECT zakaz.koli_izdelii_zak_kl, sklad.kolvo, otgruzka.kolvo_ot, SUM(zakaz.koli_izdelii_zak_kl-sklad.kolvo-otgruzka.kolvo_ot)
FROM zakaz, sklad, otgruzka GROUP BY zakaz.koli_izdelii_zak_kl) > 0
AND
zakaz.${sel} LIKE '%${what}%'
AND zakaz.username = users_data.user
AND users_data.type = 'user'
AND sums > 0

павильно мыстлю?
 

Nirva

Dmitry Polyakov
slip
структура, понимаешь что такое структура.
структура это так:

table1
----
id|name|age

table2
----
id|id_table1(fk)|toy

которая говорит о том, что есть две таблицы с определенными полями. а задача это так:
нужно выбрать все table2.toy которые относятся ко всем записям table1 у которых age>3.
 

slip

Guest
ок, структура:

zakaz
--
koli_izdelii_zak_kl

otgruzka
--
kolvo_ot

sklad
--
kolvo

задача:
отнять от zakaz.koli_izdelii_zak_kl строку otgruzka.kolvo_ot и sklad.kolvo и если то что получится будет больше чем ноль вывести на экран.

P.S. всю структуру я не описывал (она слишком большеватая) так как меня интересует именно эта часть и именно эта задача.
 

Nirva

Dmitry Polyakov
мда. как они между собой связаны наверное знают телепаты.

и что за названия вообще дурацкие "koli_izdelii_zak_kl" с ума сойти. лучший вариант - пользоваться английскими словами.
 

slip

Guest
Какое значениме имеют как они между собой связанны? мне нужно отнять от 1 таблицы другие две и если результат больше 0 то TRUE если нет то FALSE, зачем знать как они связанны межу собой?

SELECT b FROM a WHERE (select g from a) > 0 -- не верно

Вот такое условие, что откуда берется не важно, как его написать правильно хочу узнать...

Ну вот такие дурацкие название, я к ним комментарий дописал и все пунятно. =)

-~{}~ 06.07.05 01:50:

еще вариант может вообще Select вложенные не нужен

SELECT * FROM a WHERE SUM(c-b-g) > 0 GROUP BY ??

-~{}~ 06.07.05 02:12:

нет, здесь нужен был HAVING SUM(t1.s1-t2.s1-t3.s1) <> 0

-~{}~ 06.07.05 03:13:

А если соответствующей таблицы нету, он может по этому выдавать ошибку?
 
Сверху